日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C++繼承關系下的構造與析構

作者:摁回車的大雷 更新時間: 2022-09-26 編程語言

類中成員的訪問權限

Y代表可以訪問,N代表不可訪問

繼承方式 本類 派生類 類外
public Y Y Y
protected Y Y N
private Y N N

繼承方式對子類訪問父類成員的影響

繼承方式 子類繼承來的成員的訪問權限
public 繼承來的這些成員在子類中還是原來的權限
protected 原來的權限為public的成員在子類中變為protected,其他兩種不變
private 繼承來的成員在子類中權限都變為private

例如,類B以私有方式繼承了類A,那么從類A繼承來的成員在類B中都是私有成員,原來類A中可以在類外訪問的公有數據成員a,現在在類B中只能在類中訪問,如果再有類C繼承B的時候,無論以哪種方式,都不能在類C中訪問a了。

派生類構造函數的格式

格式:
派生類名::派生類名(參數總表):基類名1(參數表1),基類名2(參數表2),......,新增成員名1(參數1),新增成員名2(參數2){}

  1. 如果基類中沒有定義帶參數的構造函數,派生類的構造函數可以不加基類名和參數表;
  2. 如果基類中沒有定義默認構造函數或帶有缺省值的構造函數而只有帶參數的構造函數時,派生類的構造函數中必須顯式的給出基類名和參數表,否則編譯器將報錯

構造函數與析構函數的調用時機

作用域、內存區間、生命周期:

  1. 全局變量在程序開始時調用構造函數、在程序結束時調用析構函數。
  2. 靜態變量在所在函數第一次被調用時調用構造函數、在程序結束時調用析構函數,只調用一次。
  3. 局部變量在所在的代碼段被執行時調用構造函數,在離開其所在作用域(大括號括起來的區域)時調用析構函數。可以調用任意多次。

繼承關系:(派生類在實例化對象時)

  1. 先調用基類的構造函數,再調用子對象類(成員變量)的構造函數,最后調用派生類的構造函數;
  2. 調用順序與派生類構造函數冒號后面給出的初始化列表的順序沒有任何關系,按照繼承的順序和變量在類里面定義的順序進行初始化。 先繼承,先構造;先定義,先構造。
  3. 析構函數調用順序仍然與構造函數構造順序相反。
  4. 每次調用析構函數時總是析構最近被構造的、且沒有被析構的對象。也就是:先被構造的對象后被析構,析構順序恰與構造順序相反。(棧模型)

原文鏈接:https://blog.csdn.net/qq_41796226/article/details/126997683

欄目分類
最近更新