析构函数怎么用,在c++中的

析构函数怎么用,在c++中的,第1张

析构函数,就是善后处理,该对象的生命周期结束了,它负责善后的一些工作,如释放已分配的内存等。你将该对象delete掉时,析构函数就自动执行了,不用你去调用它的。

简单的举个例子:

假如有

class

test

{

void

test()

{

new

a

}

~test(){

delete

a;

a

=

null;

printf("析构函数执行了");

}

}

那么在mian

函数中,你new

了一个

test

对象后,再将它delete

掉,这时析构函数~test();就自动执行了,释放

a

的内存,并打印出"析构函数执行了"。

如果你自己不实现系统会帮你实现,不过系统实现的析构函数什么也不做。你自己实现的目的是delete掉你new的东西。比如你有一个类class

Test,析构函数就是:~test(){delete

a;

a=NULL;};

a就是你Test类中new的对象

系统生成的默认析构函数只会释放对象本身所占据的内存,对象通过其他方式如动态内存分配(new)和打开文件等方式获得的内存和系统资源是不会被释放的。

如果你自定义了一个,系统就不会生成默认析构函数,而采用你定义的这个。

因为C++是一个非常有趣的语言,他希望用户可以自己定义类型

他希望用户能把世间万物都抽象成对象来进行处理

有一些东西在创建的时候,是需要特别关注的

比如说你建立了一个数据库对象

那么这个数据库可以存什么样的数据,存多少数据,这些东西需要在创建之初就确定下来。所以使用构造函数,在程序一创建的时候就规定出来

而析构函数是在用户不需要这个对象的时候,销毁一些东西而准备的

比如说银行账户,你销卡了,银行就需要删除你这个账户,需要清除你的个人信息,需要关掉网银。这一系列的东西都是销毁一个账户所必须的步骤。那么这些步骤就集中在析构函数中处理

从初学者的角度来说。有的时候你创建一个对象,需要保存的信息是new出来的。比如说

class A

{

private:

char name;

}

这个name是使用new出来的空间保存的。

那么构造函数里就可以写A(){name = new char[40];}

既然是new出来,为了防止内存泄露,我们必须归还这些申请的空间

那么在这个对象被销毁时,我们就需要调用析构函数

~A(){delete[] name;}

这样就非常方便,利于 *** 作和理解,出错的几率也将大大降低

说了好多,求打赏

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11669725.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存