C 入門教程(八十) 多重繼承

2021-08-18 09:07:56 字數 1415 閱讀 3385

小古銀的官方**(完整教程):

多重繼承的呼叫順序

多重繼承的呼叫順序總結

多重繼承就是派生類繼承了多個基類。我們知道繼承可以將基類的所有成員都繼承下來作為自己的成員,重繼承也是一樣。

#include // std::cout std::endl

class base1

;class base2

;class derived : public base1, public base2

;int main(void)

void base1::show(void) const noexcept

void base2::print(void) const noexcept

派生類使用多重繼承的格式如下:

class 派生類 : public 基類1, public 基類2, public 基類3
上面**的派生類將基類1的show()函式和基類2的print()函式都繼承下來。

多重繼承與單繼承基本上差不多,所以接下來只說差異和需要注意的事項。

#include // std::cout std::endl

class base1

;class base2

;class derived : public base2, public base1

;int main(void)

return 0;

}base1::base1(void)

base1::~base1(void)

base2::base2(void)

base2::~base2(void)

derived::derived(void)

: base1()

, base2()

輸出結果:

基類2建構函式

基類1建構函式

基類1析構函式

基類2析構函式

派生類繼承基類的順序是2→1,派生類呼叫基類建構函式是1→2,而輸出結果是2→1。因此多重繼承的基類構造函式呼叫順序就是繼承基類時的順序。而析構函式相反。

通過上面的示例,再結合之前的教程示例,可以總結出下面的呼叫順序:

派生類物件的建立順序:(基類成員變數建立和初始化 → 基類建構函式執行) × n個基類並且按繼承順序呼叫 → 派生類成員變數建立和初始化 → 派生類建構函式執行。

派生類物件的釋放順序:(派生類析構函式執行 → 派生類成員變數釋放) × n個基類並且按繼承順序的反序呼叫 → 基類析構函式執行 → 基類成員變數釋放。

C 入門教程

c 是c語言的繼承,它既可以進行c語言的過程化程式設計,又可以進行以抽象資料型別為特點的基於物件的程式設計,還可以進行以繼承和多型為特點的物件導向的程式設計。c 擅長物件導向程式設計的同時,還可以進行基於過程的程式設計,因而c 就適應的問題規模而論,大小由之。c 不僅擁有計算機高效執行的實用性特徵,...

C 入門教程(八十五) 迭代器的簡單介紹

小古銀的官方 完整教程 本部分教程將講解迭代器的使用,這樣就可以更靈活地使用c 的容器庫和演算法庫。設計迭代器將留到高階教程中講解。在前面排序的教程中,曾經使用過迭代器,迭代器為演算法庫和容器庫之間的操作提供了通用的方案,使得我們使用它們的時候非常方便。我們熟悉的字串類和std vector都有很多...

c 入門教程 一

事前日常敲黑板 1 從現在開始 我寫的東西不一定完全是正確的,有些只是看了看理論,沒有實際驗證過,有些驗證過但是不同的編譯器會有不同的效果,所以建議有能力的話手動去試一下。我說的和書上寫的都不一定是對的,但是編譯器實際跑出來的結果在這個編譯器 假裝就是昨天那個軟體了 上就是對的。2 明天的內容可能會...