Der folgende Code ist späte Bindung test() -Methode, aber sollte es nicht früh binden? weil Test() -Methode in der Klasse B (aber in der Klasse A) nicht virtuell ist, und wir sind mit Zeigern der Klasse B.virtuelle Funktion in Eltern der Elternklasse
class A{
public:
virtual void test(){
cout<<"test a";
}
};
class B : public A{
public:
void test(){
cout<<"Test b";
}
};
class C: public B{
public:
void test(){
cout<<"test c";
}
};
int main(){
B *bp;
C objc;
bp = &objc;
bp->test(); // test c
}
'test' ist virtuell in allen Klassen hier; Das Schlüsselwort 'virtual' muss nicht wiederholt werden. – MicroVirus