当父类指针指向子类对象时的函数调用

来源:互联网 发布:深夜前的五分钟知乎 编辑:程序博客网 时间:2024/05/22 09:44
class A{public: void FuncA() {     printf( "FuncA called\n" ); } virtual void FuncB() {     printf( "FuncB called\n" ); }};class B : public A{public: void FuncA() {     A::FuncA();     printf( "FuncAB called\n" ); } virtual void FuncB() {     printf( "FuncBB called\n" ); }};void main( void ){ B  b; A  *pa; pa = &b; A *pa2 = new A; pa->FuncA(); ( 3) pa->FuncB(); ( 4) pa2->FuncA(); ( 5) pa2->FuncB(); delete pa2;}
父类指针指向子类实例对象,调用普通重写函数时,会调用父类中的函数。而调用被子类重写虚函数时,会调用子类中的函数。
再次说明了,子类中被重写的虚函数的运行方式是动态绑定的,与当前指向类实例的父类指针类型无关,仅和类实例对象本身有关。

0 0
原创粉丝点击