c 中解構函式有什麼作用?在什麼情況下用

2021-03-11 13:36:23 字數 705 閱讀 1170

1樓:蛙家居

析構bai函式主要作用就du是釋放資源,避免zhi記憶體洩漏。

1、析dao構函式回(destructor) 與建構函式相反,當物件結束其生命周答期時(例如物件所在的函式已呼叫完畢),系統自動執行解構函式。解構函式往往用來做「清理善後」 的工作(例如在建立物件時用new開闢了一片記憶體空間。

2、解構函式如果我們不寫的話,c++ 會幫我們自動的合成一個,就是說:c++ 會自動的幫我們寫一個解構函式。很多時候,自動生成的解構函式可以很好的工作,但是一些重要的事蹟,就必須我們自己去寫解構函式。

3、按照 c++ 的要求,只要有 new 就要有相應的 delete 。這個 new 是在建構函式裡 new 的,就是出生的時候。所以在死掉的時候,就是呼叫解構函式時,我們必須對指標進行 delete 操作。

2樓:匿名使用者

析構函來數主要作用就是釋放資源自,避免記憶體洩漏bai如果你的類裡du

面只用到的基本型別,zhi如daoint char double等,系統的預設解構函式其實什麼都沒有做

但如果你使用了其他的類如vector,string等,系統的預設解構函式就會呼叫這些類物件的解構函式

如果是自己寫解構函式的話,如果你的類裡面分配了系統資源,如new了記憶體空間,開啟了檔案等,那麼在你的解構函式中就必須釋放相應的記憶體空間和關閉相關的檔案;這樣系統就會自動呼叫你的解構函式釋放資源,避免記憶體洩漏

解構函式怎麼用,在c 中的,C 中的解構函式是怎麼呼叫的?

解構函式是一個類的例項銷燬的時候,被自動呼叫的函式,一般用來做一些清理性的工作。就是呼叫完類的實體物件後,需要呼叫解構函式 解構函式,就是善後處理,該物件的生命週期結束了,它負責善後的一些工作,如釋放已分配的記憶體等。你將該物件delete掉時,解構函式就自動執行了,不用你去呼叫它的。簡單的舉個例子...

c 中解構函式中可以呼叫虛擬函式麼

c 中 解構函式中不可以呼叫虛擬函式。effective c 中有這樣的描述 同樣的原因也適用於析構過程。一旦派生類解構函式執行,這個物件的派生類資料成員就被視為未定義的值,所以 c 就將它們視為不再存在。c 中派生類在構造時會先呼叫基類的建構函式再呼叫派生類的建構函式,析構時則相反,先呼叫派生類的...

c中stl的vector容器的解構函式怎麼用

解構函式不需 bai要直接呼叫。而du 是在物件失效時zhi自動呼叫的。所謂物件失dao效,是指程式已經執行版出區域性變數權的作用域或者是對物件指標進行delete時。比如void foo 當此函式執行結束時,自動呼叫array的解構函式 vector c 中stl的vector容器抄的解構函式不用...