C++ 构造函数与析构函数详解(一)---局部变量
2015-08-24 15:05
633 查看
对一个局部变量的构造函数将在控制线程每次通过该变量的声明时执行;每次当控制离开该局部变量所在的块时,就会去执行它的析构函数。一组局部变量的析构函数将按构造它们的相反顺序执行。例如:
在这里每次f()被调用时将构造起aa,bb和dd(按此顺序);而每次从f()里返回时,dd、bb、aa将(按此顺序)被析构。 对于变量i>0时,cc将在bb之后构造,并在dd构造之前被析构。
上面代码运行结果如下:
参考资料: C++程序设计语言 (C++之父)
#include<iostream> using namespace std; class Test { public: Test(){cout << "调用默认构造函数"<<endl;}; ~Test(){cout << "调用析构函数~" <<endl;} }; void f() { int i = 2; Test aa; Test bb; if(i>0) { Test cc; } Test dd; } int main() { f(); system("pause"); return 0; }
在这里每次f()被调用时将构造起aa,bb和dd(按此顺序);而每次从f()里返回时,dd、bb、aa将(按此顺序)被析构。 对于变量i>0时,cc将在bb之后构造,并在dd构造之前被析构。
上面代码运行结果如下:
调用默认构造函数 调用默认构造函数 调用默认构造函数 调用析构函数~ 调用默认构造函数 调用析构函数~ 调用析构函数~ 调用析构函数~ 请按任意键继续...
参考资料: C++程序设计语言 (C++之父)
相关文章推荐
- C++虚拟继承与普通继承的区别
- 2016年阿里C/C++开发笔试程序题二
- C语言中对字母进行大小写转换的简单方法
- [LeetCode] Missing Number
- 关于C语言中二维数组的P+1与*(P+1)个人浅见
- C语言strlen函数和sizeof操作符
- POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0
- C++实现红黑树与验证
- VC++6.0重命名Project名称及其MFC工程及类文件名
- 在Eclipse中搭建C/C++环境
- POJ C++程序设计 编程题#1 大整数的加减乘除
- 在windows上搭建C语言开发环境——借助eclipse和MinGW
- (转)C语言运算符优先级 详细列表
- C++ 入门教程(三) Hello World 程序讲解
- [LeetCode] Text Justification
- C++ 入门教程(二) 第一个C++程序:Hello World
- 图像处理职位面试题(图像处理+c++)
- Courses
- C++11实现for each(type var in collection)能识别的类
- c语言解析json数据