析构函数
名字与类名相同,在前面加~,没有参数和返回值,一个类最多只能有一个析构函数。
析构函数对象消亡时即自动被调用。可以定义析构函数来在对象消亡前做善后工作,如释放分配的空间等。
如果定义类时没写析构函数,则编译器生成缺省析构函数,缺省析构函数什么也不做。
如果定义了析构函数,则编译器不生成缺省析构函数
class String
{
privete:
char* p;//定义字符类型指针
public:
String()//无参构造函数
{
p=new char[10];//使用new动态分配内存空间
}
~String();
};
String::~String()
{
delete []p;
}
对象数组生命期结束时,对象数组的每个元素的析构函数都会被调用。
class Ctest{
public:
~Ctest()
{
cout<<"destructor caled"<<endl;
}
};
int main()
{
Ctest array[2];
cout<<"End Main"<<end;
//输出:End Main
return 0;
//输出:destructor caled
// destructor caled
}
delete运算导致

本文介绍了C++中的析构函数,包括其定义、调用时机以及重要性。析构函数在对象生命周期结束时自动调用,常用于释放分配的内存等资源。未自定义析构函数时,编译器会生成一个空的默认析构函数。当对象数组生命周期结束或使用delete释放对象时,析构函数会被调用。注意,删除对象数组时需使用delete[]以确保所有元素的析构函数都被正确调用。
最低0.47元/天 解锁文章
1843

被折叠的 条评论
为什么被折叠?



