C++析构函数

发布时间:2019-08-06 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了C++析构函数脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

为什么有这玩意

主要作用:释放new出来的空间

class PErson{
public:
    int * scores;
    Person() {
        // new出来的这部分空间不会被自动释放
        scores = new int[5];
    }
    // 下面这个函数,会在对象消亡时自动调用,释放掉new出的空间
    ~Person() {
        delete []scores;
    }
};

定义

  • ~类名(){}

  • 没有返回值,没有参数

  • 只能有一个

  • 自定义析构函数后,就不再生成默认的析构函数。默认的析构函数,不会释放new出的内存空间。

~Person() {
    // ...
}

调用时机

  • 在一个类生成对象时,会调用构造函数。在一个对象消亡的时,会调用析构函数

#include <iostream>
#include <stdio.h>

using namespace std;

class Demo {
    int id; public:
    Demo( int i ) {
        id = i;
        cout << "id=" << id << " Constructed" << endl; }
    ~Demo() {
        cout << "id=" << id << " Destructed" << endl; }
};

Demo d1(1); // 全局变量,最先创建

void Func(){
    static Demo d2(2); // 静态局部变量,从函数调用时生成,在整个程序结束时,88
    Demo d3(3); // 局部变量
    cout << "Func" << endl;
}

// 创建完全局变量后,进入main函数
int main (){
    Demo d4(4); // 局部变量
    d4 = 6; // 类型转换构造函数,相当于,d4 = Demo(6); Demo(6)是一个临时变量,创建完赋值给d4,然后就88了
    cout << "main" << endl;
    { Demo d5(5); } // 局部代码块,作用域就在大括号中,所以创建完,代码块执行完,就88了
    Func();
    cout << "main ends" << endl;
    return 0;
}

参考:C++程序设计 3.2.3 析构函数

脚本宝典总结

以上是脚本宝典为你收集整理的C++析构函数全部内容,希望文章能够帮你解决C++析构函数所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。