1 #include <iostream>
2
3 using namespace std;
4
5 struct BASE
6 {
7 BASE(){
8 cout<<"BASE()"<<endl;
9 }
10 virtual ~BASE(){
11 cout<<"~BASE()"<<endl;
12 }
13
14 virtual vfun(){
15 cout<<"BASE::vfun()"<<endl;
16 }
17 };
18
19 struct DERIVE : public BASE
20 {
21 DERIVE(){
22 cout<<"DERIVE()"<<endl;
23 }
24 virtual ~DERIVE(){
25 cout<<"~DERIVE()"<<endl;
26 }
27
28 virtual vfun(){
29 cout<<"DERIVE::vfun()"<<endl;
30 }
31 };
32
33 void VfunDemo(BASE* pBase)
34 {
35 pBase->vfun();
36 }
37
38 void main()
39 {
40 BASE* pBase = new DERIVE();
41 VfunDemo(pBase);
42
43 BASE* pBase2 = new BASE();
44 VfunDemo(pBase2);
45
46 delete pBase;
47 delete pBase2;
48 }
================================================
结果:
BASE()
DERIVE()
DERIVE::vfun()
BASE()
BASE::vfun()
~DERIVE()
~BASE()
~BASE()
Press any key to continue