14、不一样的C++系列--对象销毁
来源:互联网 发布:润锦众成网络借贷 编辑:程序博客网 时间:2024/05/21 08:57
对象的销毁
- 一般而言,需要销毁的对象都应该做清理
- 解决方案
- 为每个类都提供一个public的free函数
- 对象不再需要时立即调用free函数进行清理
就比如这样:
class Test{ int* p ;public: Test() {p = new int;} void free() {delete p;}}
- 存在的问题
- free只是一个普通的函数,必须显示的调用
- 对象销毁前没有做清理,很可能造成资源泄露
析构函数
- C++的类中可以定义一个特殊的清理函数
- 这个特殊的清理函数叫做析构函数
- 析构函数的功能与构造函数相反
- 定义:
~className()
- 析构函数没有参数也没有返回值类型声明
- 析构函数在对象销毁时自动被调用
#include <stdio.h>class Test{ int mi;public: //重载构造函数 Test(int i) { mi = i; printf("Test(): %d\n", mi); } //析构函数 ~Test() { printf("~Test(): %d\n", mi); }};int main(){ Test t(1); Test* pt = new Test(2); //自动会调用析构函数 delete pt; return 0;}
- 析构函数的定义准则:
- 当类中自定义了构造函数,并且构造函数中使用系统资源(如:内存申请,文件打开,等),则需要自定义析构函数。
阅读全文
0 0
- 14、不一样的C++系列--对象销毁
- 8、不一样的C++系列--面向对象
- 11、不一样的C++系列--对象的构造
- 13、不一样的C++系列--对象构造顺序
- 29、不一样的C++系列--对象模型分析
- 1、不一样的C++系列--C到C++的升级
- 37、不一样的C++系列--C语言异常处理
- 对象的销毁原则
- 对象的销毁
- Java对象的销毁
- 对象的销毁
- 16、不一样的C++系列--const对象与类成员的知识点
- 对象的创建与销毁
- 对象的所有权和销毁
- Java中对象的销毁
- javascript中对象的销毁
- Java 中对象的销毁
- 销毁该对象的根父级
- javascript之JSON对象
- hihocoder 第147周 小Hi的烦恼 (bitset的使用)
- 正交实验设计
- Oracle JDBC驱动(11g)添加到Maven仓库中
- 单工,半双工和全双工的联系与区别
- 14、不一样的C++系列--对象销毁
- n皇后问题
- Gif图制作
- Logistic回归
- Linux中C/C++动态库、静态库编译
- Dpdk distrabutor
- 图——深度优先搜索(Graph
- build.gradle中几个参数的意义
- Const