什麼是c析構函式,在C 中什麼叫析構函式,怎麼用啊?舉個列啊,謝謝!!!

2022-02-23 13:30:07 字數 2476 閱讀 4022

1樓:匿名使用者

析構函式和建構函式正好相反.

建構函式是和類同名.沒有返回值.

析構函式是在類名前加~.也沒有返回值.

建構函式上在物件建立時執行.

析構函式是在程式結束時執行.

一般時候析構函式裡面寫的都是一些資源**之類的東西.

不過c#的析構函式的呼叫機制和c++不同.並不能保證每次都會呼叫.所以最好不要利用c#的析構函式來**資源.

2樓:匿名使用者

c#析構函式是用於執行清除操作的特殊方法,析構函式不能過載,並且每個類只能有乙個析構函式

語法:~《類名》()0例:…

~employee()

3樓:匿名使用者

c#中析構函式沒有什麼意義

因為c#是託管程式

何時析構由系統作出判斷,執行垃圾**

4樓:匿名使用者

析構函式宣告方式與建構函式的相同只是在類名前加個(~)符號析構函式不接受任何引數,不帶任何反問修飾符。

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

析構函式不能過載

析構函式不能顯式或手動呼叫,只有在該類被銷毀的時候呼叫由於以上特點析構函式通常用於關閉資料庫,檔案,網路連線等操作。

5樓:匿名使用者

構建函式簡單說是建立該函式

析構函式就是捨棄該函式

在c#中什麼叫析構函式,怎麼用啊?舉個列啊,謝謝!!!

6樓:匿名使用者

c#中用不到析構函式吧,他自己會**用完的物件的,

c++中一定要用到,形式為 ~function()

7樓:

多數情況下c#中用不到析構函式,但如果在class中啟用了非託管性資源,那麼建議在其析構函式中進行適當資源清理工作(此時結合dispose模式會更好),這會使.net的自動垃圾**和手動處理協調配合起來。

凡具有析構函式的class,其被識別為垃圾後,垃圾**機制不會簡單的進行**處理,而是會將其加入到終結佇列,再由第三方執行緒(因與主線程不存在資料衝突,故彼此可非同步執行,不至應垃圾**執行緒誤了主程式的事)執行。編寫析構函式要注意重點在清理非託管性資源,且不可將垃圾復活。

8樓:匿名使用者

system.web.ui.page

9樓:落紅玉樹花生

析構函式用於析構類的例項。

1、不能在結構中定義析構函式。 只能對類使用析構函式。

2、乙個類只能有乙個析構函式。

3、無法繼承或過載析構函式。

4、無法呼叫析構函式。 它們是被自動呼叫的。

5、析構函式既沒有修飾符,也沒有引數。

例如:下面是類car的析構函式的宣告:

class car

}該析構函式隱式地對物件的基類呼叫 finalize。 這樣,前面的析構函式**被隱式地轉換為以下**:

protected override void finalize()finally

}這意味著對繼承鏈中的所有例項遞迴地呼叫 finalize 方法(從派生程度最大的到派生程度最小的)。

再舉個例子:

下面的示例建立三個類,這三個類構成了乙個繼承鏈。 類 first 是基類,second 是從 first 派生的,而 third 是從 second 派生的。 這三個類都有析構函式。

在 main() 中,建立了派生程度最大的類的例項。 注意:程式執行時,這三個類的析構函式將自動被呼叫,並且是按照從派生程度最大的到派生程度最小的次序呼叫。

class first

}class second : first}class third : second}class testdestructors}/* output (to vs output window):

third's destructor is called.

second's destructor is called.

first's destructor is called.

*/希望可以幫到你~~

c# 中 析構函式 何時用到?具體作用是什麼

10樓:手機使用者

析構函式是在物件生存期結束之後 撤銷為物件分配的空間 由編譯器自動呼叫 不能顯示的指明呼叫析構函式的時間 一般物件是在宣告的函式體結束的時候撤銷 也可以動態建立物件後用delete撤銷

c#析構函式何時執行

11樓:墜短綻罷

a和c的作用域都是整個main函式中也可以說是整個程式!顯示a的有引數構造然後是b的有引數構造b的析構-----------b的作用域只在特定的函式中,函式結束,b就會析構!c的有參構造c的析構a的析構程式執行結束!

~其實先構造的後解析,是棧的先進後出的原理,所有的函式的呼叫都會將引數入棧和區域性變數入棧!出棧的時候是相反的順序!

C建構函式的過載問題,C建構函式和析構函式可以過載嗎

因為對於後者來說,當執行my class c1語句時,c1可以呼叫my class建立物件,也可以呼叫my class float x 3.5,float y 8.5 建立物件.但是這會產生兩個不同的c1物件,極易發生歧義。所以系統不知道要呼叫那個建構函式產生物件,也不會允許程式這麼做。c 建構函式...

c中建構函式和析構函式能不能被顯示呼叫

1 c 中,建構函式和析構函式可以被顯示呼叫.顯示呼叫預設建構函式的語法 a.a a 不能寫成a.a 顯示呼叫非預設建構函式的語法 a.a a 7 不能寫成a.a 7 顯示呼叫析構函式的語法 a.a a 可以寫成a.a 2 顯示呼叫建構函式和析構函式就像呼叫一般的函式一樣,並不意味著建立或銷毀物件 ...

C 中析構函式要實現嗎?如果要實現請舉個例子

如果你自己不實現系統會幫你實現,不過系統實現的析構函式什麼也不做。你自己實現的目的是delete掉你new的東西。比如你有乙個類class test,析構函式就是 test a就是你test類中new的物件。一般來說析構函式直接 t 就ok了 但是有時候建構函式申請了記憶體,那麼西溝函式中要有對應的...