C++析构函数

一、析构函数的定义

~类名(){} 例子: ~Student(){ }

2.析构函数没有返回值,没有参数
3.对象结束的时候自动调用析构函数
4.析构函数的作用是用于释放[堆空间]
5.析构函数不可以重载
6.执行前先执行构造函数,执行后即将消失时再执行析构函数
7.若在主函数中,则析构函数在主函数结束时再调用,因为此时对象的作用域是主函数全部,此时打印就不会打印析构里的东西,只会在return 0 ; (结束函数的作用)后再打印

二、知识拓展和总结

malloc不会触发构造函数,new会 free不会触发析构函数,delete会

拓展知识:内联函数是以空间换时间 运行效率高了,所以内联函数代码量不宜太多;

形式:static inline void function(int a){;}

三、代码展示


#include <iostream>
#include <cstring>
using namespace std;

class PRO
{
public:
  PRO(const char *name); //构造函数声明

  ~PRO()
  {
    cout<<"~PRO"<<endl;
    cout<<"释放前~this->name="<<this->name<<endl;
    delete []this->name;
    this->name =NULL;
    cout<<"释放后~this->name="<<this->name<<"\n"; //没有值
  }
  //析构函数,无返回值,无参数
  //释放堆空间
private:
  char *name;
};

PRO::PRO(const char *name)
{
  cout<<"PRO"<<endl;
  //this->name =name; 方法错误,会修改this->name的地址
  this->name = new char[100]; //100块大小
  strcpy(this->name,name);
  cout<<this->name<<endl;

}
int main(int argc, char const *argv[])
{
  //创建栈对象
  PRO pro("jack");

  // PRO *st = new PRO;//申请了一块
  // delete st;
  // st = NULL;
  return 0;
}

结果

PS C:\Users\newuser\Desktop\C++\第四天C++> g++ .\X析构函数.cpp
PS C:\Users\newuser\Desktop\C++\第四天C++> ./a
PRO
jack
~PRO
释放前~this->name=jack
释放后~this->name=
PS C:\Users\newus
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Qt历险记

谢谢你的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值