當父類指標指向子類物件時的函式呼叫
阿新 • • 發佈:2019-01-23
父類指標指向子類例項物件,呼叫普通重寫函式時,會呼叫父類中的函式。而呼叫被子類重寫虛擬函式時,會呼叫子類中的函式。 再次說明了,子類中被重寫的虛擬函式的執行方式是動態繫結的,與當前指向類例項的父類指標型別無關,僅和類例項物件本身有關。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; }