1 #include <iostream> 2 using namespace std; 3 class A { 4 private: 5 int nVal; 6 public: 7 void Fun() 8 { cout << "A::Fun" << endl; }; 9 virtual void Do() 10 { cout << "A::Do" << endl; } 11 }; 12 class B:public A { 13 public: 14 virtual void Do() 15 { cout << "B::Do" << endl;} 16 }; 17 class C:public B { 18 public: 19 void Do( ) 20 { cout <<"C::Do"<<endl; } 21 void Fun() 22 { cout << "C::Fun" << endl; } 23 }; 24 void Call( 25 A* p 26 ) { 27 p->Fun(); p->Do(); 28 } 29 int main() { 30 Call( new A()); 31 Call( new C()); 32 return 0; 33 }