• <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 發布時間:2020-09-29 08:50 原文鏈接: C++之繼承中的構造和析構學習總結(一)

    在我們前面學習過類中的構造函數,以及析構函數,那么自然而然,在繼承關系中,必然是存在著析構和構造著。

    一、子類對象的構造

    1、問題的引出

    如何初始化父類成員?

    父類構造函數和子類構造函數有什么關系?

    2、子類中的構造函數怎樣初始化父類成員:

    子類中也是可以定義構造函數的:

    --必須對繼承而來的成員進行初始化,那么怎樣初始化呢?這里有兩種方式:

    -直接通過初始化列表或者賦值的方式進行初始化

    -調用父類構造函數進行初始化

    3、父類構造函數在子類中的調用方式

    默認調用

    -適用于無參構造函數和使用默認參數的構造函數

    顯示調用

    -通過初始化列表進行調用

    -適用于所有父類構造函數

    實踐代碼模板:

    image.png

    代碼實踐:

    image.png

    image.png

    輸出結果:

    image.png

    注解:通過上面的代碼輸出結果,我們可以發現,子類定義的對象如果沒有沒有傳參,就隱式調用父類的構造函數;當然上面也使用了顯示調用,通過初始列表的就可以看出。

    4、構造規則

    子類對象在創建時會首先調用父類的構造函數

    先執行父類構造函數再執行子類的構造函數

    父類構造函數可以被隱式調用或者顯示調用

    5、對象創建時構造函數的調用順序

    (1)調用父類的構造函數

    (2)調用成員變量的構造函數

    (3)調用類自身的構造函數

    總結:先父母,后客人,再自己


  • <noscript id="yywya"><kbd id="yywya"></kbd></noscript>
  • 东京热 下载