C++一种有意思的构造析构函数调用现象
2012/6/13 11:47:00 请友读忠(更多) E界MRP开发下载网 533阅 // 研究观察C++一种有意思的构造析构函数调用现象 // 现象// 在构造函数A中调用重载的构造函数B
// 结论
// 在B被调用结束(A未结束)时已经有一次析构函数被调用 // 关注 // 测试平台
// 1.Win2K + VC6
// 2.Linux + gcc /*
//程序运行输出
CTest(0, 0)
“CTest() m_CTest* = 1
CTest(0)
“CTest() m_CTest* = 2
CTest()
main()
“CTest() m_CTest* = 3
//程序运行输出
*/ #include class CTest
{
public:
CTest()
{
CTest(0); //已经调用析构函数 printf(“CTest()\r\n“);
}
virtual “CTest()
{
m_CTest*++;
printf(“ “CTest() m_CTest* = %d\r\n“, m_CTest*);
}
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_CTest*;
}; int CTest::m_CTest* = 0; int main()
{
CTest cT; printf(“main()\r\n“); //调用析构函数 return 0;
}
发表评论