C 基礎 析構函式

2022-08-03 10:48:09 字數 1084 閱讀 4339

c#析構函式

1. 析構函式的定義與注意的問題

析構函式用於釋放被占用的系統資源。

析構函式的名字由符號「~」加類名組成。

使用析構函式時,應該注意下面的問題:

?只能在類中使用析構函式,不能在結構中使用析構函式。

?乙個類只能有乙個析構函式。

?不能繼承或過載析構函式。

?析構函式只能被自動呼叫。

?析構函式沒有任何修飾符、沒有任何引數、也不返回任何值。

2. 呼叫析構函式

?垃圾**器決定了析構函式的呼叫,我們無法控制何時呼叫析構函式。

?垃圾**器檢查是否存在應用程式不再使用的物件。如果垃圾**器認為某個物件符合析構,則呼叫析構函式(如果有)並**用來儲存此物件的記憶體。

?程式退出時會呼叫析構函式。

?我們可以通過呼叫collect強制進行垃圾**,但是請不要這樣做,因為這樣做可能導致效能問題。

二、建構函式與析構函式的區別

?建構函式和析構函式是在類中說明的兩種特殊的成員函式。

?建構函式是在建立物件時,使用給定的值將物件初始化。

?析構函式用於釋放乙個物件。在物件刪除前,使用析構函式做一些清理工作,它與建構函式的功能正好相反。

三、示例

using system;

using system.collections.generic;

using system.linq;

using system.text;

namespace test

}class second : first            // second類從first類派生

}class third : second            // third類從second類派生

}static void main(string args)}}

程式執行時,這三個類的析構函式將自動被呼叫,呼叫順序是按照從派生程度最大的(~third())到派生程度最小的(~first())次序呼叫的,和建構函式的呼叫順序正好相反。

執行結果:

~third()析構函式

~second()析構函式

~first()析構函式

C 基礎 析構函式

二,使用析構函式的有什麼用?一,程式設計師無法控制何時呼叫析構函式,因為這是由垃圾 器決定的。垃圾 器檢查是否存在應用程式不再使用的物件。如果垃圾 器認為某個物件符合析構,則呼叫析構函式 如果有 並 用來儲存此物件的記憶體。程式退出時也會呼叫析構函式。二,使用析構函式釋放資源 通常,與執行時不進行垃...

C 基礎 11 析構函式

一 析構函式 析構函式 destructor 用於析構類的例項。即在類的例項被銷毀之前,執行資源的清理或者釋放非託管資源。下面的 示例中宣告了乙個名為car的類,該類包含乙個名為 car的析構函式 1 class car2 7 析構函式的特徵如下 1.不能在結構中定義析構函式。只能對類使用析構函式。...

C 析構函式 虛析構函式

1.為什麼要定義虛析構函式?如果有乙個帶有虛函式功能的類,則它需要乙個虛析構函式,原因如下 1 如果乙個類有虛函式功能,它經常作為乙個基類使用 2 如果它是乙個基類,它的派生類經常使用new來分配 3 如果乙個派生類物件使用new來分配,並且通過乙個指向它的基類的指標來控制,那麼它經常通過乙個指向它...