C++一种有意思的构造析构函数调用现象

// 2002/07/05
// awzzz

// 研究观察C++一种有意思的构造析构函数调用现象

// 现象
// 在构造函数A中调用重载的构造函数B
// 结论
// 在B被调用结束(A未结束)时已经有一次析构函数被调用

// 关注

// 测试平台
// 1.Win2K + VC6
// 2.Linux + gcc

/*
//程序运行输出
CTest(0, 0)
 ~CTest() m_CTestCount = 1
CTest(0)
 ~CTest() m_CTestCount = 2
CTest()
main()
 ~CTest() m_CTestCount = 3
//程序运行输出
*/

#include <stdio.h>

class CTest
{
public:
 CTest()
 {
  CTest(0);

  //已经调用析构函数

  printf("CTest()/r/n");
 }
 virtual ~CTest()
 {
  m_CTestCount++;
  printf(" ~CTest() m_CTestCount = %d/r/n", m_CTestCount);
 }
 CTest(int i)
 {
  CTest(i, 0);

  //已经调用析构函数

  printf("CTest(%d)/r/n", i);
 }
 CTest(int i, int j)
 {
  printf("CTest(%d, %d)/r/n", i, j);
 }
 static int m_CTestCount;
};

int CTest::m_CTestCount = 0;

int main()
{
 CTest cT;

 printf("main()/r/n");

 //调用析构函数

 return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值