析构函数

时光总嘲笑我的痴心妄想 提交于 2019-11-29 19:31:49

配合构造函数使用,如果结构体/类没有用到堆的空间,可以不用析构函数,但是一旦有成员函数或者构造函数使用了堆上的空间,那就必须要使用析构函数。自己在成员函数中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;
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!