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
{
}
C++ 局部变量的析构的更多相关文章
- C++系列总结——构造与析构
前言 在使用资源前,我们需要做一些准备工作保证资源能正常使用,在使用完资源后,我们需要做一些扫尾工作保证资源没有泄露,这就是构造与析构了,这和编程语言是无关的,而是使用资源的一种方式.C++只不过是把 ...
- c++ 异常处理(2)
前面一篇博文简单介绍了 c++ 异常处理的流程,但在一些细节上一带而过了,比如,_Unwind_RaiseException 是怎样重建函数现场的,Personality routine 是怎样清理栈 ...
- C++ 异常处理机制的实现
http://blog.jobbole.com/103925/ 本文深入讨论了VC++编译器异常处理的实现机制.附件源代码包含了一个VC++的异常处理库. 下载源代码 – 19 Kb 介绍 相对于传统 ...
- std::unique_lock
/*与Mutex RAII相关,方便线程上锁,相比std::lock_guard提供了更好的上锁解锁控制,反正我是没看出来也是在构造时上锁,在析构时解锁,感觉和lock_gurad大差不差都是在线程函 ...
- <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 ...
- Delphi中线程类TThread实现多线程编程1---构造、析构……
参考:http://www.cnblogs.com/rogee/archive/2010/09/20/1832053.html Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大 ...
- C++构造与析构
C++语言构造函数与析构函数需要注意的地方. 构造 考虑以下定义 struct Node { char *name; int value; Node() { name = ]; strcpy(name ...
- C++反汇编第二讲,不同作用域下的构造和析构的识别
C++反汇编第二讲,不同作用域下的构造和析构的识别 目录大纲: 1.全局(静态)对象的识别,(全局静态全局一样的,都是编译期间检查,所以当做全局对象看即可.) 1.1 探究本质,理解构造和析构的生成, ...
- c++局部变量在外可用的方法
C++的局部变量在作用域结束后,一般都会被回收.如下面这段代码 map<a*, b*> _map; void fun() { a _a; b _b; _map[&_a] = &am ...
随机推荐
- curl网站开发指南
我一向以为,curl只是一个编程用的函数库. 最近才发现,这个命令本身,就是一个无比有用的网站开发工具,请看我整理的它的用法. =================================== ...
- Debug
memory dump就是程序留下的一个犯罪现场,而你就是一个侦探,侦查技术越高,发现的秘密也越多,破案也就越容易.
- Linux-IP地址后边加个/8(16,24,32)是什么意思?
是掩码的位数 A类IP地址的默认子网掩码为255.0.0.0(由于255相当于二进制的8位1,所以也缩写成“/8”,表示网络号占了8位); B类的为255.255.0.0(/16) ...
- javascript保留两位小数
原文地址http://blog.csdn.net/he20101020/article/details/8503308 <script type="text/javascrip ...
- P1027 木瓜地
/*=========================================================== 描述 Description Bessie不小心游荡出Farmer John ...
- 解决Oracle安装完成后,随便输入用户名密码只要选择DBA身份就能登陆进去的问题
以sysdba身份登录既采用的是本地(系统)认证方式, 将%ORACLE_HOME%\network\admin\sqlnet.ora中的SQLNET.AUTHENTICATION_SERVICES= ...
- 解决Android AVD的方向键DPAD不能用的问题
Android AVD在生成出来一个新的模拟器之后默认都是不能够使用DPAD的.原因是它禁用了. 解决方式如下 : 找到C:\Documents and Settings\Administrator\ ...
- Dom之标签属性
一.标签默认属性的查找与修改 查找 <!DOCTYPE html><html lang="en"><head> <meta charset ...
- BlueStacks 设置代理服务器 Proxifier指定任意程序的代理服务器
详见地址: http://www.ccproxy.com/proxifier-tou-ming-dai-li.htm BlueStacks如何使用代理服务器 http://www.360doc.com ...
- comet4j文档
Comet4J配置参数表 <!--Comet4J配置 --> <listener> <description>Comet4J容器侦听</description ...