C++入门之一【类:析构函数)】

 定义:  当一个对象的生命周期结束时,系统会自动调用一个成员函数,它没有返回值,没有参数,不能重载,这个函

数就是析构函数。是特殊的成员函数。


函数名是类名前面加上一个“~”符号,功能与构造函数相反。


调用析构函数的次序正好与调用构造函数的次序相反。


特征:

 1、在类名加上字符~
2、无参数,无返回值
3、一个类只有一个析构函数(所以不能重载
4、对象生命周期结束时,系统会自动调用析构函数
5、注意:析构函数体内并不是删除对象,而是做一些清理工作。
   


对于对象生命周期结束的几种情况:


①如果在一个函数中定义了一个对象(它是自动局部对象),当这个函数被调用结束时,对象应该释放,在对象释放前

 自动执行析构函数。


②static局部对象在函数调用结束时对象并不释放,因此也不调用析构函数,只在main函数结束或调用exit函数结束

程序时,才调用static局部对象的析构函数。


③如果定义了一个全局对象,则在程序的流程离开其作用域时(如main函数结束或调用exit函数) 时,调用该全 局对

象的析构函数。


④如果用new运算符动态地建立了一个对象,当用delete运算符释放该对象时,先调用该对象的析构函数。

析构函数的作用


在撤销对象占用的内存空间之前完成一些清理工作,使这部分内存空间可以分配给新的对象使用。


举例:


class A
{
public:
 A()
 {
     p = new char[10];
 }

 ~A()
 {
 cout<<" ~A() "<<endl;
 delete []p;
 p=NULL;
 }

 void display()
 {
  cout<<"disp"<<endl;
 }

private:
    char *p;

};

//测试
void main()
{
    A a;
    a.~A();
    a.display();
}


实际上,析构函数除了释放资源的作用外,还可以用来执行“用户希望在最后一次使用对象后的一些操作”。







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值