析構函數
~Test()
一,關於析構函數
特征:
- 函數名由~<類名>組成,無參數且無返回值
- 一個類只有一個析構函數,且無顯示的定義,系統會生成一個缺省的析構函數(合成析構函數)
- 析構函數不能重載,其與構造函數一定是成對出現
作用:
構造函數相反,用於釋放對象資源,並銷毀非static成員。
程序示例:
1 class Time 2 { 3 public: 4 Time(int h) 5 { 6 cout << "I'm constructor" << endl; 7 } 8 ~Time() 9 { 10 cout << "I'm destructor" << endl; 11 } 12 13 private: 14 int m_hour; 15 }; 16 17 Time t(10); 18 system("pause");
二,析構使用誤區
1 class Date 2 { 3 public: 4 Date(int year=1990,int month=1,int day=1) 5 : _year(year),_month(month), _day(day) 6 { 7 p = new int; 8 cout << "I'm constructor " << p << endl; 9 } 10 ~Date() 11 { 12 cout << "I'm destructor " << p << endl; 13 delete p; 14 } 15 16 private: 17 int _year=1990; 18 int _month; 19 int _day; 20 int *p; 21 }; 22 23 Date d1; 24 Date d2(d1); 25 system("pause"); 26 27 //結果 28 I'm constructor 034D19A0 29 Press any key to continue . . . 30 I'm destructor 034D19A0 //銷毀 31 I'm destructor 034D19A0 //第二次銷毀
<文檔結束符>