單繼承和多繼承的派生類建構函式和解構函式的構造規則和執行順序是怎樣的

2021-07-29 11:15:21 字數 573 閱讀 7740

1樓:我是美麗的珊瑚

多繼承派生類建構函式的執行順序是先執行所有基類的建構函式(順序按照定義派生類時指定的各基類順序),再執行派生類的建構函式,解構函式執行順序,與建構函式完全相反(因為,資料是按棧儲存的)。

單繼承先執行基類建構函式,在執行派生類建構函式,解構函式執行順序與建構函式相反。

2樓:宸宸滼韞

當基類的建構函式沒有引數,或沒有顯式定義建構函式時,派生類可以不向基類傳遞引數,甚至可以不定義建構函式

當基類含有帶引數的建構函式時,派生類必須定義建構函式,以提供把引數傳遞給基類建構函式的途徑。

在c++中,派生類建構函式的一-般格式為:派生類名(引數總表) :基類名(參數列)

其中基類建構函式的引數,通常**於派生類建構函式的引數總表,也可以用常數值。

在派生類中可以根據需要定義自己的解構函式,用來對派生類中增加的成員進行清理工作。基類的清理工作仍然由基類的解構函式負責。由於解構函式是不帶引數的,在派生類中是否要自定義解構函式與它所屬基類的解構函式無關。

在執行派生類的解構函式時,系統會自動呼叫基類的解構函式,對基類的物件進行清理

關於c派生類中虛擬函式的問題,C 已經在派生類中重定義了抽象類中的純虛擬函式,為什麼還不讓我用派生類定義物件!?

如果是虛擬函式的話,在派生類中重新定義其函式體時,不會導致同名覆蓋.當用基類指標指向派生類物件並呼叫虛擬函式時,執行的是在派生類中重新定義的虛擬函式的函式體.虛擬函式必須要在基類用virtual修飾才能為虛擬函式,派生類若重定義該函專數,則無論是否有屬virtual關鍵字都是虛擬函式。你要判斷派生類...

C中,派生類的成員函式呼叫基類的受保護成員

不是很來清楚你的意圖 自 但是在c 中派生類的成員函式bai 是可以直接呼叫基類du的zhi受dao保護成員的。set staff modification 傳一個基類的引用,就可以在set中直接修改資料,而不是修改拷貝了。但是在基類中,你得把部門,名字,考勤情況等設定為protected.發上來看...

java中的介面為什麼可以多繼承而其他類則不能實

類定義屬性和方法 描述某一類事物的抽象 而介面定義的是行為 並不限於任何具體意向。按照邏輯上來說 單繼承更明確 一個子類就應該是其父類代表的事物中的某個更具體的類別 不應該即是這種東西又是那種東西 而從實用角度上來說 單繼承易讀 易維護 語義清晰 邏輯清楚。而介面則不同 介面只定義一些公共行為 比如...