配合构造函数使用,如果结构体/类没有用到堆的空间,可以不用析构函数,但是一旦有成员函数或者构造函数使用了堆上的空间,那就必须要使用析构函数。自己在成员函数中free堆的空间也可以,但是如果此成员函数释放了,别的成员函数又想要用怎么办?难道是再次申请?所以释放的时机是较难把握的,合理的释放时机就是在创建的对象完全不用的时候释放,所以C++提供了析构函数,用来最后释放堆上的内存。
————————————————
版权声明:本文为CSDN博主「雲烟」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baidu_33879812/article/details/92114140
析构函数 和类名一样需要 ~ 符号。 一个类只能有一个析构。
类中没有提供构造,析构,会提供一个默认的什么都不做的 构造和析构
#include <iostream>
#include <string>
using namespace std;
class CPerson
{
private:
char* m_pszName;
public:
CPerson()
{
m_pszName = new char[10];
strcpy_s(m_pszName,10,"asdasdasd");
}
~CPerson() // 析构函数 用来删除类内指针成员在堆区分配的空间
{
delete[] m_pszName;
m_pszName = 0;
cout << "DestroyObject" << endl;
}
public:
void Show()
{
cout << m_pszName << endl;
}
};
int main()
{
{
CPerson ps;
ps.Show();
} // 析构函数 在对象的生命周期结束 自动调用
system("pause");
return 0;
}
来源:https://blog.csdn.net/weixin_44656803/article/details/100899391