析构函数
来源:互联网 发布:oracle创建表的sql语句 编辑:程序博客网 时间:2024/06/08 03:20
先要知道析构函数是什么用的:
{
析构函数是当对象脱离其作用域时,系统会自动执行析构函数。就是相当于清理善后的作用。
比如你在一个函数中申请了一块内存空间来一个对象(对象是什么呢? 比如我有一个 class A 然后我写 A mywork;
A是一个类, mywork则是对象, 并且这个对象的类型是A这个类),你调用完这个函数之后, 这个对象如果没有用了,我们不应该把这个对象留着浪费空间,虽然电脑内存很大,
但是如果一个小程序中没有释放申请的空间的话,有很可能就会导致电脑内存耗尽。所以我们要释放这个对象的空间。析构函数就是释放这个空间的作用(和构造函数是相反的)
。
}
来看下下面这段程序
#include<iostream>
using namespace std;
class T
{
public:
~T()
{
cout<<"析构函数被调用。"; // 这个是自定义的析构函数
}
};
// 析构函数可以自己重新定义,如果不写的话,编译系统会自动生成一个析构函数 但它不会进行任何操作
int main()
{
T *t=new T;//建立一个T类的指针对象t
delete t; // 释放 t这个对象的内存空间
}
到底是什么时候调用~T()这个析构函数的呢?
我在~T()这个析构函数里加了 cout<<"析构函数被调用。"; 这个语句
如果我们不知道什么时候调用析构函数 加了这句 我就知道什么时候被调用了 因为被调用的时候 屏幕上会输出
"析构函数被调用。" 这段文字
所以可以把delete t;这句去掉 会发现屏幕上没出现"析构函数被调用。" 这段文字 加上去delete t;
就出现了"析构函数被调用。"这句 说明加上去之后 析构函数被调用了。
说明析构函数是在释放内存空间的时候才会被调用,你也可以在析构函数里加上释放内存空间的语句,这样不用你手动去释放内存空间,当这个对象的作用域结束之后,他自己会
调用析构函数,从而也会执行你在析构函数里写的释放内存空间的语句。
- 函数 - 构造函数 - 析构函数
- 构造函数、析构函数、虚函数
- 虚函数/构造函数/析构函数
- 构造函数&析构函数&虚函数
- 构造函数,析构函数
- 构造函数,析构函数
- 构造函数+析构函数
- 构造函数/析构函数
- 析构函数 虚函数
- 析构函数 虚函数
- 构造函数 & 析构函数
- 构造函数 析构函数
- 析构函数,构造函数
- 构造函数、析构函数
- 构造函数,析构函数
- 构造函数,析构函数
- 构造函数,析构函数
- 虚函数 析构函数
- python常用工具下载地址收集
- javascript继承形成史
- 自定义GridView/ListView数据源
- iOS 开发——CoreBluetooth蓝牙开发(一)
- abs与fabs的区别
- 析构函数
- 自定义View(视图)的创建、添加、移除细节分析
- flash声音导入
- uva 10047 The Monocycle
- C Prime plus 第六章习题
- Vijava 学习笔记之数据中心下(集群和非集群的资源池和ESXI)树形结构展示
- Eclipse安装SVN插件
- Linux网络配置相关
- 设计模式系列--观察者模式基本