C++析构函数
来源:互联网 发布:社会与经济统计数据库 编辑:程序博客网 时间:2024/05/18 00:56
作用:
创建对象时系统会自动调用构造函数进行初始化工作,同样,销毁对象时系统也会自动调用一个函数来进行清理工作(例如回收创建对象时消耗的各种资源),这个函数被称为析构函数。
析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要用户调用,而是在销毁对象时自动执行。与构造函数不同的是,析构函数的名字是在类名前面加一个”~“符号。
特点:
析构函数的作用并不是删除对象,而是在撤销对象占用的内存之前完成一些清理工作,使这部分内存可以被程序分配给新对象使用。析构函数不返回任何值,没有函数类型,也没有函数参数。因此它不能被重载。一个类可以有多个构造函数,但只能有一个析构函数。当然,析构函数也可被用来执行“用户希望在最后一次使用对象之后所执行的任何操作”,例如输出有关的信息。如果用户没有定义析构函数,C++编译系统会自动生成一个析构函数,实际上什么操作都不进行。
在一般情况下,调用析构函数的次序正好与调用构造函数的次序相反:最先被调用的构造函数,其对应的(同一对象中的)析构函数最后被调用,而最后被调用的构造函数,其对应的析构函数最先被调用。
例子:
#include<iostream>
using namespace std;
class Student{
private:
char *name;
int age;
float score;
public:
Student(char *, int, float); //构造函数
~Student(); //析构函数
void say(); //普通成员函数
};
Student::Student(char*name1,intage1,floatscore1):name(name1),age(age1),score(score1){};
Student::~Student()
{
cout<<"再见"<<endl;
}
void Student::say()
{
count<<name<<"年龄是"<<age<<"成绩是"<<score<<endl;
}
int main()
{
Student stu1("小明",15,90.5f);
stu1.say();
Student stu2("李磊",15,90.5f);
stu2.say();
Student stu3("王爽",15,90.5f);
stu3.say();
cout<<"main函数即将运行结束"<<endl;
return 0;
}
运行结果:
小明的年龄是 15,成绩是 90.5
李磊的年龄是 16,成绩是 95
王爽的年龄是 16,成绩是 80.5
main 函数即将运行结束
王爽再见
李磊再见
小明再见
1 0
- 析构函数(C#)
- C++--------析构函数
- c++::析构函数
- C++-析构函数
- 构造函数和析构函数【c++】
- c++-构造函数与析构函数
- C++-构造函数,析构函数
- [c++]构造函数和析构函数
- C++--构造函数与析构函数
- 【C#】构造函数和析构函数
- 【c#】—架构函数&&析构函数
- 【C++】构造函数和析构函数
- 【C++】构造函数和析构函数
- C++(构造函数&&析构函数)
- 【C#】构造函数&析构函数
- 【c++】构造函数与析构函数
- 【C++】类构造函数 & 析构函数
- C++:构造函数和析构函数
- (OK) 移植,编译,安装 LineageOS-14.1-kiwi (Android-7.1.1,运行在Huawei honor 5x) for VirtualBox
- 安卓 呼吸灯效果--代码实现
- GPGPU OpenCL编程步骤与简单实例
- 奖学金
- 二维DCT变换
- C++析构函数
- 递归算法之排队购票问题(未名湖边的烦恼)java实现
- js-数据类型,怎么判断是数组?
- 程序员职业思考与规划 --- 程序员如何快速学习一项新技术
- 排序-冒泡排序(java实现)
- SPI、I2C、UART三种串行总线协议的区别
- 关于指针的入门试验
- 封装数据到List集合和Map集合
- 进程与线程的一个简单解释