C 關於繼承有個問題搞不明白,C 關於繼承有個問題搞不明白

2022-05-18 12:46:40 字數 1867 閱讀 1844

1樓:匿名使用者

1.父類解構函式負責析構父類的資源,子類解構函式負責析構子類的資源。因為只有類自己知道自己申請了多少資源從而知道應該怎樣析構自己(比如關閉開啟的控制代碼,釋放堆記憶體等)以及有權訪問類的所有成員(這樣才能順利完成析構)。

試想,如果只由子類來析構資源,它能訪問父類的私有成員嗎?它怎麼能順利完成父類資源的析構呢?

2.先呼叫子類的解構函式,再呼叫父類的。因為呼叫子類的解構函式時可能需要呼叫父類的方法(繼承來的),如果順序反了,父類先析構,呼叫子類解構函式時會發生錯誤。

3.可通過類物件、類指標、類引用呼叫解構函式。通過類物件呼叫時,會呼叫本類及其父類(以及祖先類)的解構函式。

而通過類指標或類引用呼叫時,要考慮類的解構函式是否是虛擬函式的問題。是虛擬函式時,多型機制會發生作用,呼叫的是物件實際所屬類的解構函式以及父類(祖先類)的解構函式。非虛擬函式時,呼叫的是指標或引用的型別的類(即指標或引用的型別是哪個類)的解構函式以及父類(祖先類)的解構函式。

簡而言之,用類指標、類引用呼叫解構函式時,情況有點複雜,目前你只需知道有這回事就行了。

2樓:

好像都是兩個:派生類b不能繼承基類a的構造和析構,但是在建立派生類物件時會先自動呼叫基類的構造,再呼叫自己的構造。析構時則相反,先呼叫自己的析構,再呼叫基類的析構。

如果b類沒有帶參構造而a類有帶參構造,則建立b類帶參物件就是非法的,儘管a類有帶參構造。

關於c++類繼承的問題

3樓:狂___暴擊

cminewnd *pmine = (cminewnd*)afxgetmainwnd();//例項化並初始化賦值,型別強轉

resetrecord本來就不是「cwnd」的成員,他是cmainwnd的成員,怎麼能亂用?

4樓:小狗鄙視貓

((cminewnd*)afxgetmainwnd())->resetrecord(); 優先順序

一個c++關於類繼承的語法問題

5樓:匿名使用者

你的程式有問題

看你這樣應該是

class c

class a public :c

}class b

這樣的話c只是一個指標,要呼叫的話要用c->fun(),但是因為c不能例項化,因為c類有虛擬函式

因此c.fun()無論是從表示式上還是內容上都是錯誤的,要訪問a的fun()只能使用

a aa.fun()

6樓:匿名使用者

我試過了,這個是會進行呼叫的。

首先確認一點:你的寫法有問題,c *c; c->fun();

然後第二個問題是記憶體模型問題,c類中有純虛擬函式不能進行例項化,所以定義的指標,指向的例項模型是繼承類的。

所以進行呼叫的時候呼叫的就是子類的fun().

7樓:匿名使用者

應該會吧 純虛擬函式是沒有實現體的,用物件來呼叫的話只能呼叫子類裡面的。

其實樓主自己試驗下就可以知道了。

8樓:

肯定不會啊,c是一個指標變數,不是一個成員,不具有成員的屬性

c++ 繼承的問題 為什麼不行呢

9樓:匿名使用者

因為繼承來的這個成員變數f與函式同名了,這樣改就可以了:

public:void f()

當然前提是繼承來的f不能是私有的訪問屬性

10樓:御含靈

名字衝突了吧 一個f又是函式 又是變數

11樓:

函式名和成員變數名字衝突,鑑定完畢

有問題,我不明白,有一個問題,我不明白

沒事,總會碰到喜歡你的,我之前相親相一個失敗一個,5月份相了一個,我們彼此喜歡9月份結的婚,這些不用太在意,加油!經常有文章寫中美兩國的城市對比,有從經濟發展水平上比較的,也有從人文環境上比較的,或者從地理氣候上比較的等等,總之各有見解。緣分還沒有到吧,耐心等待,說不定明天就會來敲門的,另外,愛情只...

關於遺產繼承的問題,關於遺產繼承的一個問題

婚姻自由,男到女家 女到男家都是允許的,和繼承無關。你爺爺奶奶的全部子女都有繼承權,三叔如果有子女他的子女可以代位繼承其份額。法律並沒有所謂倒插門女婿的具體規定,除非你二叔過繼出去,不然他也有合法的繼承權。但是根據繼承法第十條的規定,你奶奶的房子應該由你父親 二叔和你姑姑平均繼承。我想是沒有,他再怎...

坐電梯的問題關於坐電梯的一個問題不明白

我來給你專業的回答 1 你必須按 下 2 電梯此時會向上執行,如果在此時樓層三層以上沒有其他的外呼 即別人也在按按鈕 或電梯裡沒人 即沒有內選的層站 電梯會上來停在3層,你在轎內選1層後,就向下送你去一層。3 如果此時有人在選層或 電梯裡面有人去 電梯就會到或 直接去 的那一層,接或 送 那個人,然...