C++ Construtor Deconstrutor virtual

 
  1. // test.cpp : Defines the entry point for the console application.
  2. //

  3. #include "stdafx.h"
  4. #include <iostream>
  5. using namespace std;
  6. class Base1
  7. {
  8. public:
  9.     virtual void fun1()=0;
  10.     int * m_pCount;
  11.     Base1()
  12.     {
  13.         cout<<"Base1()"<<endl;
  14.         m_pCount=new int();
  15.     }
  16.     ~Base1()
  17.     {
  18.         cout<<"~Base1()"<<endl;
  19.         delete m_pCount;
  20.     }
  21. };

  22. class Base2
  23. {
  24. public:
  25.     virtual void fun1()=0;
  26.     int * m_pCount;
  27.     Base2()
  28.     {
  29.         cout<<"Base2()"<<endl;
  30.         m_pCount=new int();
  31.     }
  32.     virtual ~Base2()
  33.     {
  34.         cout<<"~Base2()"<<endl;
  35.         delete m_pCount;
  36.     }
  37. };

  38. class subClass1:public Base1
  39. {
  40. public:
  41.     virtual void fun1()
  42.     {
  43.         cout<<"hello,subClass1"<<endl;
  44.     }
  45.     subClass1()
  46.     {
  47.         cout<<"subClass1()"<<endl;
  48.     }
  49.     ~subClass1()
  50.     {
  51.         cout<<"~subClass1()"<<endl;
  52.     }
  53. };

  54. class subClass2:public Base2
  55. {
  56.     public:
  57.     virtual void fun1()
  58.     {
  59.         cout<<"hello,subClass2"<<endl;
  60.     }
  61.     subClass2()
  62.     {
  63.         cout<<"subClass2()"<<endl;
  64.     }
  65.     ~subClass2()
  66.     {
  67.         cout<<"~subClass2()"<<endl;
  68.     }
  69. };

  70. int _tmain(int argc, _TCHAR* argv[])
  71. {
  72.     Base1 *pBase1=new subClass1();
  73.     delete pBase1;
  74.     cout<<"-----------------"<<endl;
  75.     subClass1 *pClass1=new subClass1();
  76.     delete pClass1;
  77.     cout<<"-----------------"<<endl;
  78.     Base2 *pBase2=new subClass2();
  79.     delete pBase2;
  80.     cout<<"-----------------"<<endl;
  81.     subClass2 *pClass2=new subClass2();
  82.     delete pClass2;
  83.     int i;
  84.     cin>>i;
  85.     return 0;
  86. }
  87. 输出:
  88. Base1()
  89. subClass1()
  90. ~Base1()
  91. -----------------
  92. Base1()
  93. subClass1()
  94. ~subClass1()
  95. ~Base1()
  96. -----------------
  97. Base2()
  98. subClass2()
  99. ~subClass2()
  100. ~Base2()
  101. -----------------
  102. Base2()
  103. subClass2()
  104. ~subClass2()
  105. ~Base2()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值