#include<iostream> using namespace std; class A { public: void fun(){cout<<"A"<<endl;} }; class B:public A { public: virtual void fun(){cout<<"B"<<endl;} }; class C:public B { public: void fun(){cout<<"C"<<endl;} }; class D:public C { public: virtual void fun(){cout<<"D"<<endl;} virtual void funD(){cout<<"t_D"<<endl;} }; class E:public D { public: virtual void fun(){cout<<"E"<<endl;} virtual void funE(){cout<<"t_E"<<endl;} }; class E1:public D { public: virtual void funE1(){cout<<"t_E1"<<endl;} }; void main() { A* a=(A*)new B(); a->fun(); B* b=(B*)new C(); b->fun(); C* c=(C*)new D(); c->fun(); D* d=(D*)new E(); d->funD(); E* e=(E*)new E1(); e->funE(); E1* e1=(E1*)new D(); e1->fun(); cout<<sizeof(B)-sizeof(A)<<endl; cout<<sizeof(D)-sizeof(A)<<endl; } 输出结果: A C D t_D t_E1 D 3 3 这道题难度不大,但挺有意思,可以检测出对虚函数机制的理解程度,特别是第5个