次のコードはlate binding test()メソッドですが、早くバインドしないでください。テスト()メソッドは、クラスB(ただし、クラスA内)で仮想ではなく、関数がクラスのvirtual
宣言されていたら、私たちはクラスB親クラスの親の仮想関数
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'はすべてのクラスで仮想です。 'virtual'キーワードを繰り返す必要はありません。 – MicroVirus