C++学习复习笔记03 – 析构函数
析构函数名也应与类名相同,只是在函数名前面加一个位取反符~,例如~stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省的析构函数(即使自定义了析构函数,编译器也总是会为我们合成一个析构函数,并且如果自定义了析构函数,编译器在执行时会先调用自定义的析构函数再调用合成的析构函数),它也不进行任何操作。所以许多简单的类中没有用显示的析构函数。
析构函数的知识点:
1. 函数名为取反符~加上类名,例如~stud( );
2. 无参数无返回值;
3. 在对象脱离作用域时,如程序退出、函数调用完成退出时,析构函数会自动调用;
4. 只能有一个析构函数;
由于自动调用,我们就可以在析构函数中做清理类工作,如释放堆中申请的内存。
代码实例:
#include <iostream> #include <string> using namespace std; class Person { public: Person() { cout << "创建类:构造函数Person()自动执行了" << endl; } ~Person() { cout << "结束类:析构函数~Person()自动执行了" << endl; } }; int main() { Person p1; cout << "------------------------------" << endl; return 0; //此处 p1 将脱离作用域,析构函数将发生作用 }
编译运行:
除非注明,戊辰人博客文章均为原创,转载请以链接形式标明本文地址