析构函数

析构函数:定义形式固定 如下

~ClassName()
{
    ...//释放由于构造函数开辟的 堆内存
}

时间:在对象被系统销毁之前,由系统自动调用。
目的:清理由构造函数开辟出的无法释放的内存,如new出来的堆内存

当有多个对象被构造时,遵循‘先构造.后销毁’的原则,如下:
前提:同一种存储位置下

#include <iostream>

using namespace std;

class Time
{
    public:
        Time(){
            hour = min = sec = 0;
            cout << "Time()" << endl;
        }

        Time(int h,int m,int s){
            hour = h;
            min  = m;
            sec  = s;
            cout << "Time(int,int,int),hour: " << hour << endl;
        }

        //析构函数: 形式固定
        ~Time(){
            cout << "~Time(),hour: " << hour << endl;
        }

        void disp(){
            cout << this->hour << ":" << min << ":" << sec << endl;
        } 

        inline int getHour();

    private:
        int hour;
        int min;
        int sec;
}t0,t2(10,23,34);

//类外定义成员函数,如果想 搞成inline函数
inline int Time::getHour()
{
    return hour;
}

int main()
{
    //同一个存储类型的对象,  先构造的后销毁  后构造的先销毁
    //什么时间销毁: 根据存储类型,销毁
    Time t1(2,3,4);
    t1.disp();

    //按原则应先销毁t3, 可实际先销毁的是t1,t3,t2,t0,顺序如此是因为栈区的先销毁,数据区的后销毁
    static Time t3(6,2,3);

    cout<< "in main ,end ..." << endl;

    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值