学习笔记---C++析构函数心得

1.动态分配的对象的析构函数


 1 class man{
2 public:
3 man(){
4 cout<<"man begin"<<endl;
5 };
6 ~man(){
7 cout<<"man end"<<endl;
8 }
9 };
10
11 int _tmain(int argc, _TCHAR* argv[])
12 {
13 man *m = new man();
14 return 0;
15 }

输出为  :

man begin

动态分配的类必须在执行delete函数后才执行析构函数;

在13行后加入 delete m;

输出为:

man begin

man end

2.局部的值对象的析构函数

局部对象的析构函数执行是在其所在的{}结束时执行


 1 class man{
2 public:
3 man(){
4 cout<<"man begin"<<endl;
5 };
6 ~man(){
7 cout<<"man end"<<endl;
8 }
9 };
10 void runMan()
11 {
12 man m;
13 cout <<"man run"<<endl;
14 }
15 int _tmain(int argc, _TCHAR* argv[])
16 {
17 runMan();
18 return 0;
19 }

输出结果为:

man begin

man run

man end

假如修改runMan()的实现形式为


1 void runMan()
2 {
3 {
4 man m;
5 }
6 cout <<"run man"<<endl;
7 }

输出结果为:

man begin

man end

man run

时间: 2024-10-06 04:38:24

学习笔记---C++析构函数心得的相关文章

PHP学习笔记之析构函数以及static,self,parent关键字

引用 $jordan1 = &$jordan; 当jordan1 = null; //此时会直接调用析构函数 而当无&时,就需要等到所有的引用都为null时,才调用析构函数析构  乔丹这个对象: static 变量的赋值的时候的写法: /*1.静态属性用于保存类的公有数据 *2.静态方法只能访问静态属性 *3.静态成员不需要实例化对象就可以访问 *4.类的内部可以通过self或者static关键字访问自身静态成员 *5.可以通过parent关键字访问父类的静态成员 *6.可以通过类的名称在

学习笔记与个人心得——测试转产品(小强老师分享的话题)

测试与产品的区别,是产品偏向创造为主动性而测试偏向验证为被动性:考虑问题的角度不同,产品注重考虑功能业务能为用户带来什么价值,而测试关注的是功能业务的正确性有没有bug.最大共同点是考虑问题方面比较多,比较操心. 测试转产品可以怎么做: (1)勇气:行动力,如果这一步没有就会想了很多顾虑然后就放弃了: (2)硬技能方面:基本工具(office等)的使用,原型工具使用(axure),思维方面工具(xmind),撰写文档能力(prd等): (3)软技能方面:沟通协作能力(表达和理解): (4)思维方

c++学习笔记5,多重继承中派生类的构造函数与析构函数的调用顺序(二)

现在来测试一下在多重继承,虚继承,MI继承中虚继承中构造函数的调用情况. 先来测试一些普通的多重继承.其实这个是显而易见的. 测试代码: //测试多重继承中派生类的构造函数的调用顺序何时调用 //Fedora20 gcc version=4.8.2 #include <iostream> using namespace std; class base { public: base() { cout<<"base created!"<<endl; }

C++ Primer 学习笔记_55_类与数据抽象 --析构函数

复制控制 --析构函数 引言: 在构造函数中分配了资源之后,需要一个对应操作自动回收或释放资源.析构函数就是这样的一个特殊函数,它可以完成所需的资源回收,作为类构造函数的补充. 1.何时调用析构函数 撤销类对象时会自动调用析构函数: Sales_item *p = new Sales_item; { Sales_item item(*p); //调用复制构造函数 delete p; //调用指针p的析构函数 } //调用对象item的析构函数 动态分配的对象只有在指向该对象的指针被删除时才撤销,

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数、抽象类、虚析构函数、动态创建对象

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数.抽象类.虚析构函数.动态创建对象 一.纯虚函数 1.虚函数是实现多态性的前提 需要在基类中定义共同的接口 接口要定义为虚函数 2.如果基类的接口没办法实现怎么办? 如形状类Shape 解决方法 将这些接口定义为纯虚函数 3.在基类中不能给出有意义的虚函数定义,这时可以把它声明成纯虚函数,把它的定义留给派生类来做 4.定义纯虚函数: class <类名> { virtual <类型> <函

C++ Primer 学习笔记33_面向对象编程(4)--虚函数与多态(一):多态、派生类重定义、虚函数的访问、 . 和-&gt;的区别、虚析构函数、object slicing与虚函数

C++ Primer学习笔记33_面向对象编程(4)--虚函数与多态(一):多态.派生类重定义.虚函数的访问. . 和->的区别.虚析构函数.object slicing与虚函数 一.多态 多态可以简单地概括为"一个接口,多种方法",前面讲过的重载就是一种简单的多态,一个函数名(调用接口)对应着几个不同的函数原型(方法). 更通俗的说,多态行是指同一个操作作用于不同的对象就会产生不同的响应.或者说,多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为. 多态行分

C++学习笔记25,永远将析构函数声明为virtual

要永远记得将析构函数声明为virtual----><<effective c++>> 或许你觉得这句话不一定对,但无需质疑的是这句话是很有用的. 查看下面的例子: #include <iostream> #include <string> using namespace std; class B{ public: ~B(){ cout<<"base is destroyed!"<<endl; } }; cla

Java学习笔记心得——初识Java

初识Java 拿到这本厚厚的<Java学习笔记>,翻开目录:Java平台概论.从JDK到TDE.认识对象.封装.继承与多态...看着这些似懂非懂的术语名词,心里怀着些好奇与担忧,就这样我开始走进Java的世界.  Java产生的历史 Java来自于Sun公司的一个叫Green Project中撰写的程序语言,全球信息网(World Wide Web)兴起,Java Applet成为网页互动技术的代表,特别适合于Internet应用程序开发. Java语言的特点 1.面向对象 这是Java最重要

C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配

特殊工具与技术 --优化内存分配 引言: C++的内存分配是一种类型化操作:new为特定类型分配内存,并在新分配的内存中构造该类型的一个对象.new表达式自动运行合适的构造函数来初始化每个动态分配的类类型对象. new基于每个对象分配内存的事实可能会对某些类强加不可接受的运行时开销,这样的类可能需要使用用户级的类类型对象分配能够更快一些.这样的类使用的通用策略是,预先分配用于创建新对象的内存,需要时在预先分配的内存中构造每个新对象. 另外一些类希望按最小尺寸为自己的数据成员分配需要的内存.例如,