C++類的析構函數


析構函數

~Test()

一,關於析構函數

特征:

  1. 函數名由~<類名>組成,無參數且無返回值
  2. 一個類只有一個析構函數,且無顯示的定義,系統會生成一個缺省的析構函數(合成析構函數)
  3. 析構函數不能重載,其與構造函數一定是成對出現

作用:

構造函數相反,用於釋放對象資源,並銷毀非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  //第二次銷毀

 

<文檔結束符>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM