当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++基础入门教程

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

// 研究观察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;
    }

 

相关内容
赞助商链接