其他语言

本类阅读TOP10

·基于Solaris 开发环境的整体构思
·使用AutoMake轻松生成Makefile
·BCB数据库图像保存技术
·GNU中的Makefile
·射频芯片nRF401天线设计的分析
·iframe 的自适应高度
·BCB之Socket通信
·软件企业如何实施CMM
·入门系列--OpenGL最简单的入门
·WIN95中日志钩子(JournalRecord Hook)的使用

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
C++一种有意思的构造析构函数调用现象

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

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




相关文章

相关软件