C加加中是否要編寫對基類和成員物件的解構函式的呼叫?

2025-02-16 23:45:12 字數 1174 閱讀 8189

1樓:網友

基類的解構函式會自動被呼叫。

成員物件的解構函式在物件生存期結束時會自動呼叫。

看看下面程式的輸出結果:

derived

member

base原始碼如下。

#include

using namespace std;

class member {

public: ~member() cout public: ~derived ()cout return 0;

2樓:網友

不需要。基類和成員物件的解構函式,都由它們各自自己的類實現。

你只需要關心你自己的類,就行了。

在你的類中申請的資源,在解構函式里要記得釋放。

3樓:網友

所有的「解構函式」都很少需要被呼叫(只有一些非常特殊的場景才需要),關鍵在於你的「成員」變數是指標不是?如果是分配的指標物件,需要delete它,這樣就trigger解構函式的呼叫了。

c++ 基類解構函式必須得實現嗎?

4樓:網友

必要性上看,理論上來說,虛構函式不是必須寫明的,特別是在使用視覺化編譯器的時候更是如此,因為如果沒有寫明解構函式,編譯器會在編譯的時候自動生成乙個簡單的解構函式。

但是要明確解構函式非常總要,特別是在涉及到繼承和派生的時候,如果沒有明確給出解構函式,往往會造成編譯器不報錯,程式可以執行,但是容易出現記憶體錯誤的問題。

在涉及的指標操作的時候,如果不寫明解構函式,同樣也會由於編譯自動生成的解構函式過於簡單,從而容易造成在動態分配記憶體的釋放上出現意想不到的記憶體錯誤。

後面兩種情況下的錯誤,編譯器是不會檢查的,就像編譯器永遠不會檢查記憶體溢位錯誤一樣,一旦錯誤發生,不容易找出問題。如果是大型程式,修正這類錯誤非常困難。因而從安全和穩定性而言,解構函式可以說是必須的,可以保證程式在程式設計師的設計下工作,而不會出現無法預料的錯誤。

5樓:網友

必須實現。 基類的解構函式是必須呼叫的,儘管這個基類是抽象類!

6樓:小小樂師

1,你不帶函式體,編譯器最好也會要它帶上。

2,如果不用指標,那麼這個就不算是基類了。如果是基類,那麼虛解構函式的作用就是為了正確呼叫到派生類的解構函式,以防止。

C 中,基類中的private跟protected成員許可權

protected 的主要用途是在類的繼承中。父類中protected的成員在子類中可見 可以直接訪問 但是父類的private在子類中是不可見的。另外你的 private只能是基類public來訪問 是有問題的,這麼表達不清楚,你的意思是不是用public的函式來訪問private的成員?publ...

c中如何呼叫基類的虛擬函式,c 中 解構函式中可以呼叫虛擬函式麼

下面是例子 include using namespace std class a a virtual void f 一個類的物件中是沒有關於普通成員函式的指標的slot,只有成員變數還有虛表指標,類的成員函式的 定義在pe檔案的 區,所以從程式載入時,就已經分配好了記憶體用於存放這些 執行時所需要...

C 中的派生類,可以不定義物件直接呼叫基類的成員和呼叫自己的成員函式嘛

如果你想呼叫的來函式是基源類的靜態成員函bai 數,不定義派生類對 du象是zhi可以呼叫的,格式 base fun 因為靜態dao成員並不是類的某個物件的成員,而是所有該類的物件所共享的。通過類名就可以直接訪問。如果你想呼叫的不是靜態函式,不定義派生類物件是不可能的。因為你呼叫的成員函式可能會訪問...