和构造函数相反,在对象被销毁时调用,无论对象在栈上或者堆上创建
可以在析构函数里面释放一些内容
析构函数的名称为
~类名
和构造函数差不多,就是构造函数前面加了个~
#include <iostream>
class Entity {
public:
Entity() {
std::cout << "构造函数调用" << std::endl;
}
~Entity() {
std::cout << "析构函数调用" << std::endl;
}
};
void test() {
Entity entity;
}
int main() {
test();
return 0;
}
F:\Projects\ClionProjects\test\cmake-build-debug-cygwin\test.exe
构造函数调用
析构函数调用
进程已结束,退出代码为 0
因为对象在栈上创建,所以退出test函数的时候,创建的对象就会被析构~
另外:这个析构函数,可以手动调用,但不建议这么写,要不它会被调用两次...