析构函数:定义形式固定 如下
~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;
}