C++【09】析构函数

本文介绍了C++中的析构函数,包括其定义、调用时机以及重要性。析构函数在对象生命周期结束时自动调用,常用于释放分配的内存等资源。未自定义析构函数时,编译器会生成一个空的默认析构函数。当对象数组生命周期结束或使用delete释放对象时,析构函数会被调用。注意,删除对象数组时需使用delete[]以确保所有元素的析构函数都被正确调用。

析构函数

名字与类名相同,在前面加~,没有参数和返回值,一个类最多只能有一个析构函数。

析构函数对象消亡时即自动被调用。可以定义析构函数来在对象消亡前做善后工作,如释放分配的空间等。

如果定义类时没写析构函数,则编译器生成缺省析构函数,缺省析构函数什么也不做。

如果定义了析构函数,则编译器不生成缺省析构函数

class String
{
    privete:
        char* p;//定义字符类型指针
    public:
        String()//无参构造函数
        {
            p=new char[10];//使用new动态分配内存空间
        }
        ~String();       

};

String::~String()
{
    delete []p;
}

对象数组生命期结束时,对象数组的每个元素的析构函数都会被调用

class Ctest{
    public:
    ~Ctest()
    {
        cout<<"destructor caled"<<endl;
    }
};

int main()
{
    Ctest array[2];
    cout<<"End Main"<<end;
//输出:End Main
    return 0;
//输出:destructor caled
//     destructor caled
}

delete运算导致

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值