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

{

}

C++ 局部变量的析构的更多相关文章

  1. C++系列总结——构造与析构

    前言 在使用资源前,我们需要做一些准备工作保证资源能正常使用,在使用完资源后,我们需要做一些扫尾工作保证资源没有泄露,这就是构造与析构了,这和编程语言是无关的,而是使用资源的一种方式.C++只不过是把 ...

  2. c++ 异常处理(2)

    前面一篇博文简单介绍了 c++ 异常处理的流程,但在一些细节上一带而过了,比如,_Unwind_RaiseException 是怎样重建函数现场的,Personality routine 是怎样清理栈 ...

  3. C++ 异常处理机制的实现

    http://blog.jobbole.com/103925/ 本文深入讨论了VC++编译器异常处理的实现机制.附件源代码包含了一个VC++的异常处理库. 下载源代码 – 19 Kb 介绍 相对于传统 ...

  4. std::unique_lock

    /*与Mutex RAII相关,方便线程上锁,相比std::lock_guard提供了更好的上锁解锁控制,反正我是没看出来也是在构造时上锁,在析构时解锁,感觉和lock_gurad大差不差都是在线程函 ...

  5. <Effective C++>读书摘要--Ctors、Dtors and Assignment Operators<一>

    <Item 5> Know what functions C++ silently writes and calls 1.If you don't declare them yoursel ...

  6. Delphi中线程类TThread实现多线程编程1---构造、析构……

    参考:http://www.cnblogs.com/rogee/archive/2010/09/20/1832053.html Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大 ...

  7. C++构造与析构

    C++语言构造函数与析构函数需要注意的地方. 构造 考虑以下定义 struct Node { char *name; int value; Node() { name = ]; strcpy(name ...

  8. C++反汇编第二讲,不同作用域下的构造和析构的识别

    C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲: 1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.) 1.1 探究本质,理解构造和析构的生成, ...

  9. c++局部变量在外可用的方法

    C++的局部变量在作用域结束后,一般都会被回收.如下面这段代码 map<a*, b*> _map; void fun() { a _a; b _b; _map[&_a] = &am ...

随机推荐

  1. curl网站开发指南

    我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...

  2. Debug

    memory dump就是程序留下的一个犯罪现场,而你就是一个侦探,侦查技术越高,发现的秘密也越多,破案也就越容易.

  3. Linux-IP地址后边加个/8(16,24,32)是什么意思?

    是掩码的位数        A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位);    B类的为255.255.0.0(/16) ...

  4. javascript保留两位小数

      原文地址http://blog.csdn.net/he20101020/article/details/8503308   <script type="text/javascrip ...

  5. P1027 木瓜地

    /*=========================================================== 描述 Description Bessie不小心游荡出Farmer John ...

  6. 解决Oracle安装完成后,随便输入用户名密码只要选择DBA身份就能登陆进去的问题

    以sysdba身份登录既采用的是本地(系统)认证方式, 将%ORACLE_HOME%\network\admin\sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= ...

  7. 解决Android AVD的方向键DPAD不能用的问题

    Android AVD在生成出来一个新的模拟器之后默认都是不能够使用DPAD的.原因是它禁用了. 解决方式如下 : 找到C:\Documents and Settings\Administrator\ ...

  8. Dom之标签属性

    一.标签默认属性的查找与修改 查找 <!DOCTYPE html><html lang="en"><head> <meta charset ...

  9. BlueStacks 设置代理服务器 Proxifier指定任意程序的代理服务器

    详见地址: http://www.ccproxy.com/proxifier-tou-ming-dai-li.htm BlueStacks如何使用代理服务器 http://www.360doc.com ...

  10. comet4j文档

    Comet4J配置参数表 <!--Comet4J配置 --> <listener> <description>Comet4J容器侦听</description ...