C 的類型別中,怎麼往物件中的析構函式傳引數?

時間 2021-05-14 11:44:52

1樓:

析構函式不可以加引數。如果你要達到這樣的效果,自己寫乙個處理函式,它可以是你這個要析構類的成員函式,在裡面做一些你要做的事情,它可以帶引數。

2樓:「已登出」

@Calvin Neo 的回答已經非常好了,我說說我的看法。

1、希望題主可以說明一下為什麼需要給析構函式中傳入引數,其目的是什麼?

2、因為C++的析構函式是不可以傳入引數的,所以引數需要在其他函式中傳入,Calvin Neo的辦法是乙個。

3、我覺得更好的方式是在建構函式中將需要的引數傳入,在每個例項中記錄下來,在物件析構的時候使用。

個人建議,僅供參考。

推薦我的個人blog https://www.

3樓:

假設析構函式可以帶引數,那麼發生異常函式退出如何呼叫析構函式呢,如何傳遞你指定的引數呢?

那麼很容易想到,我們增加一對 Create/Destroy 或 Initialize/UnInitialize 或 Construct/Destruct 函式來進行二段構造/析構,一般gui程式設計中經常用這種方式實現

這樣不好的就是我們需要手動呼叫二段構造/析構函式,不過我們可以加乙個 guard 類,在這個類的建構函式和析構函式中呼叫二段構造/析構

4樓:

假定我們可以往析構函式中傳引數,那麼我們必然可以顯式呼叫析構函式,否則如何完成傳參的動作?

既然我們希望顯式呼叫析構函式,那麼這個就簡單了,我們定義乙個destroy成員函式,當我們要析構這個類的物件的時候,先呼叫這個成員函式。如下,這樣就能解決你的問題

ptr->destroy(123, "abc");

delete ptr;

c 中,delete是如何呼叫虛析構函式的?

Pluto Hades 正常情況下,基類的構造和析構是不會被派生類覆蓋的。這也很好記,因為它們不同名嘛 正常new派生類指標,會先呼叫基類構造再呼叫派生類構造。正常delete派生類指標,和構造相反,先呼叫派生類析構,再呼叫基類析構。 Bunny.Lann 虛成員函式和虛析構函式肯定都是呼叫D的,只...

C 多型的delete呼叫的是父類析構函式,那麼子類物件的記憶體釋放了嗎?

蘇秦 嘴巴選手。申請堆空間的時候會額外記錄本次申請的空間大小,通過類似 prepend 乙個 size t 的形式。所以 delete base 需要滿足,編譯器通過 base 獲取到的記憶體指標和通過 derived 獲取到的記憶體指標相同。如果編譯器在獲取記憶體指標時和析構函式不相關,那麼就會有...

haskell中的型別類是相當於物件導向語言的介面嗎?

趙丙峰 模擬是有用的,但是可能讓你誤入歧途。想要理解這些問題,需要抽象,俗稱上層次。最基本的是代數型別的值,亦即各種字面值,如123,hello world 等。這是最基本的程式磚塊。如何操作這些值,我們有些想法。比如123可以看作是自然數,自然可以把針對自然數的操作施用其上。這裡引申出了自然數這個...