合成析构函数和析构函数
来源:互联网 发布:前海金融管理学院 知乎 编辑:程序博客网 时间:2024/05/21 14:04
今天看《c++ primer》的时候,突然看到合成析构函数这个名词,对析构函数了解的多点,对合成析构函数则了解的不多。
析构函数特点:
1.整个类只有一个,即不能重载;
2.没有形参;
3.没有返回值;
4.不能被继承(继承的是成员变量和成员函数,个人理解严格说这些构造函数,析构函数不能称之为“函数”,因为不符合函数定义的特征,所以构造函数,析构函数不能被继承)
5.可以手动调用(不理解为什么允许这么做)
关于这个合成析构函数,《c++ primer 第四版》这么说的:
……编译器总会 为我们合成一个析构函数……合成析构函数按对象创建时的逆序撤销每个非static成员,因此,它按成员在类中声明次序的逆序撤销成员,对于类类型的成员,合成析构函数调用该成员的析构函数来撤销对象……即使我们编写了自己的析构函数,合成析构函数依旧运行……
这里有以下几点理解:
1.合成析构函数不管你建不建析构函数他都有;
2.合成析构函数负责销毁对象本身,例如我们对象含有一个int成员时,合成析构函数可以回收这个int成员占用的空间(一个不含有成员变量的类的sizeof=1);这是合成析构函数真正做的事情;
3.我们的析构函数是对合成析构函数的扩展,所以我们常常在合成析构函数中析构堆中的资源;
4.按照合成析构函数和析构函数的分工,可以理解必然是先运行手动建立的析构函数,再运行合成析构函数;
以上是关于析构函数和合成析构函数的理解。 0 0
- 合成析构函数和析构函数
- 合成析构函数和析构函数
- 合成析构函数与虚析构函数
- 析构函数与合成析构函数
- 析构函数的作用及合成析构函数
- 合成函数
- 用实例代码理解一下c++11”定义析构函数阻止合成移动”
- 利用CvVideoWriter和cvWriteFrame函数合成视频
- 构造函数和析构函数
- 构造函数和析构函数
- 构造函数和析构函数
- 构造函数和析构函数
- 构造函数和析构函数
- 关于构造函数和析构函数
- 构造函数和析构函数
- 浅析构造函数和析构函数
- 构造函数和析构函数
- 浅析构造函数和析构函数
- javaSE(23)(反射)
- android 应用程序的组成部分
- gdb调试工具
- UI设计
- MFC 遇到的问题
- 合成析构函数和析构函数
- exceptions and solutions when installing local hadoop
- 1032. Sharing (25)【链表】——PAT (Advanced Level) Practise
- Median of Two Sorted Arrays
- 用最小堆实现优先队列
- 通过api查看android控件属性
- iOS开发技巧--使用CocoaPods创建、删除第三方框架
- 语言字符串操作函数 - strcpy、strcmp、strcat、反转
- 编程语言中的常量折叠(const folding)