Khu*_*ram 5 c++ virtual-functions late-binding
以下代码是后期绑定test()方法,但不应该提前绑定?因为test()方法在B类中不是虚拟的(但在A类中),我们使用的是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
}
Run Code Online (Sandbox Code Playgroud)
一旦virtual在类中声明了一个函数,它在从该类继承的类中始终是虚拟的,无论您是否使用该virtual关键字.
所以在你的课堂上C,这个test()功能实际上是覆盖B和A自己的test()功能.
| 归档时间: |
|
| 查看次数: |
496 次 |
| 最近记录: |