析構函式

析構函式

析構函式(destructor),當對象脫離其作用域時(例如對象所在的函式已調用完畢),系統自動執行析構函式。析構函式往往用來做“清理善後” 的工作(例如在建立對象時用new開闢了一片記憶體空間,應在退出前在析構函式中用delete釋放)。如果用戶沒有編寫析構函式,編譯系統會自動生成一個預設的析構函式。

函式格式

C++當中的析構函式格式如下:

class<類名>類名

{

public:

~<類名>();類名

};

<類名>::~<類名>()類名類名

{

//函式體

}

如以下定義是合法的:

classT

{

public:

~T();

};

T::~T()

{

//函式體

}

當程式中沒有析構函式時,系統會自動生成以下析構函式:

<類名>::~<類名>(){},即不執行任何操作。類名類名

下面通過一個例子來說明一下析構函式的作用:

#include

usingnamespacestd;

classT

{

public:

~T(){cout<<"析構函式被調用。";}//為了簡潔,函式體可以直接寫在定義的後面。

};

intmain()

{

T*t=newT();//建立一個T類的指針對象t

deletet;

cin.get();

}

最後輸出:

析構函式被調用。

cin.get()表示從鍵盤讀入一個字元,為了讓我們能夠看得清楚結果。當然,析構函式也可以顯式的調用,如(*t).~T;也是合法的。

c++語言析構語言實例

包含構造函式和析構函式的C++程式。#include#includeusing namespace std;class stud //聲明一個類 {private: // 私有部分int num;char name; char sex ; public: //公用部分stud(int n,char nam[],char s ) //構造函式{num = n; strcpy (name, nam);sex = s; } ~stud( ) //析構函式{ cout << "stud has been destructe!" << endl;//通過輸出提示告訴我們析構函式確實被調用了}void display( ) //成員函式,輸出對象的數據{cout<<"num: "<<<<"name: "<<<<"sex: "<<

相關詞條

相關搜尋

熱門詞條

聯絡我們