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

王朝c/c++·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

// 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;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航