C++ 局部变量的析构

http://blog.chinaunix.net/uid-52437-id-2108747.html

在一个函数内,申明一个局部类变量。则这个变量什么时候析构呢? 并不是在函数退出,释放栈空间时候析构消亡,而是在打括号终结时。(搞了这么多年c++,这点都没搞清楚,只能说明基础不扎实阿)。举例如下

#include <stdio.h>
#include <unistd.h>
class TT
{
        public:
        TT();
        ~TT();
};
TT::TT()
{
        printf("construct\n");
}
TT::~TT()
{
        printf("destruct\n");
}
int main()
{       int n=2;
        {
                TT t1;
                printf("000000\n")
        } //此处析构

        return 0;
}
输出:
construct
000000
destruct
1111111111

而不是
construct
000000
1111111111
destruct

 

初始化的知识点

Test::Test(int a)

  :ma(false),    //ma=false

  :mp(b)   //mp = b

{

}

posted on 2015-05-08 13:28  maxpak  阅读(1000)  评论(0编辑  收藏  举报