C++析构函数

C++析构函数教程

C++ 中,构造函数 用来做一些 的初始化工作,而且是系统自动调用,同样,在类被销毁时,系统还提供了一个析构函数,用来做一些清理工作,比如释放分配的内存、关闭打开的文件等,同样,析构函数,也是系统自动调用。

析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个 ~ 符号。

析构函数没有 参数,不能被 重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。

C++析构函数详解

定义

一个类只有一个析构函数,且析构函数没有返回值,没有参数。

语法

~Destructor() { }

说明

析构函数的前面一定要加 ~,并且是系统自动调用的。

案例

析构函数

系统自动调用析构函数

#include <iostream> using namespace std; class Student { public: Student(string name, int age):m_name(name), m_age(age) { } void sayHello() { cout << "I am " << m_name << " and i am " << m_age << " years old!" << endl; } ~Student() { cout << "Call ~Student" << endl; } private: string m_name; int m_age; }; int main() { cout << "嗨客网(www.haicoder.net)\n" << endl; Student stu("HaiCoder", 109); stu.sayHello(); Student stu1("Jobs", 57); stu1.sayHello(); return 0; }

程序运行后,控制台输出如下:

27_C析构函数.png

我们定义了一个析构函数,我们可以看到,我们程序结束时,系统自动为我们调用了析构函数,并不需要我们手动调用析构函数。

C++析构函数教程总结

析构函数(Destructor)也是一种特殊的成员函数,没有返回值,不需要程序员显式调用(程序员也没法显式调用),而是在销毁对象时自动执行。构造函数的名字和类名相同,而析构函数的名字是在类名前面加一个 ~ 符号。

析构函数没有参数,不能被重载,因此一个类只能有一个析构函数。如果用户没有定义,编译器会自动生成一个默认的析构函数。