析构器
析构器特点
~
+类名- 没有返回值
- 在实例化对象被销毁时自动调用
- 不可以带形参
- 不可以重载
析构器的触发条件有2个:
- 堆对象,
delete
关键字触发 - 栈对象,离开栈的作用域时会被自动触发
#include <iostream>
using namespace std;
class Stopwatch
{
public:
//构造器
Stopwatch(){
cout<<"构造器"<<endl;
name = new char[20];
};
//析构器
~Stopwatch(){
cout<<"析构器"<<endl;
if (name) {
delete name;
}
};
public:
char* name;
};
int main(int argc, char const *argv[])
{
/* code */
{
Stopwatch wc; //栈对象,离开栈的作用域时,析构器自动触发
}
Stopwatch wc1; //栈对象,离开栈的作用域时,析构器自动触发
Stopwatch* wc2 = new Stopwatch(); //堆对象,离开栈的作用域时,析构器自动触发
delete wc2;
return 0;
}
/*
构造器
析构器
构造器
构造器
析构器
析构器
*/