#include <iostream> using namespace std; class A { public: A(){cout<<"A's cons."<<endl;} virtual ~A(){cout<<"A's des."<<endl;} virtual void f(){cout<<"A's f()"<<endl;} void g(){f();} }; class B:public A { public: B(){f(); cout<<"B's cons."<<endl;} ~B(){cout<<"B's des."<<endl;} }; class C:public B { public: C(){cout<<"C's cons."<<endl;} ~C(){cout<<"C's des."<<endl;} void f(){cout<<"C's f()."<<endl;} }; void main(){ A *a = new C; a->g(); delete a; }
输出: A's cons.
构造函数和析构函数中调用虚函数采用静态联编,成员函数中调用虚函数采用动态联编。 |
|