C 基礎(四)繼承

2021-06-21 09:40:15 字數 824 閱讀 7985

類的繼承:

類的繼承分三種方式:公有 私有  保護, 若不明確指出預設私有繼承;

類的繼承主要幹三件事情:接收基類成員,改造基類成員,新增新的成員

關於接收基類成員:接收基類所有的資料成員,接收基類所有的函式成員,除了建構函式,析構函式,為什麼呢?前面說過:構造,析構函式都是給編譯器看的,編譯器本身可以看到基類的構造析構函式,所以對於派生類的建構函式,編譯器是一層一層的呼叫,先呼叫基類再呼叫子類的建構函式,析構則相反;

關於改造基類成員:這裡主要有乙個覆蓋的問題,當派生類重新定義乙個跟基類成員函式(返回值,引數,函式名)一模一樣的函式時候,對於派生類物件而言會覆蓋基類同名的成員函式

關於新增新的成員:略,派生類新增了新的資料成員,自然要新增新的成員函式對新資料成員進行處理;

對於公有繼承,只有基類的私有成員不可訪問,要訪問他們需要通過父類的介面,其餘成員訪問屬性不變;

對於私有繼承,除了基類的私有成員不可訪問外,父類的公有成員保護成員都變為私有,這意味著若再次繼承,不論採用何種方式,其二代子類都不能直接訪問爺爺類的資料成員;

對於保護繼承,對於類內成員函式而言,與公有繼承無差異,但是其二代子類,不論採用何種繼承方式,都能直接訪問爺爺類的(非私有)資料成員;

兒子可以直接訪問其父類的公有與保護成員,卻不能訪問私有成員;        (若要訪問可以通過介面);

友元函式可以直接訪問對應類的公有與私有成員,卻不能訪問保護成員;(若要訪問可以通過介面);

通過物件只能直接訪問該類的公有成員,公有成員是類的對外介面,名片;

C 基礎 四 繼承和派生

1 類和類之間的關係 include using namespace std classa 1 包含關係 b has a class b a a 2 依賴關係 c use a classc 3 繼承關係 d extend a classd public a intmain void 執行結果 fun...

C 基礎 繼承

繼承class 派生類 訪問限定符 基類 public protected private 類成員函式 友元函式 子類函式 類物件 子類繼承類父類所有的成員變數和成員函式。與訪問限定 符無關。訪問限定符只是限制了訪問。子類訪問父類成員變數,把父類成員變數訪問限制符,改為 protected 子類內部...

C 基礎 繼承

如果乙個類的成員被定義成該類的私有成員,那麼只有基類的成員和友元可以訪問類中的私有成員。同時派生類也無法訪問基類的私有成員,派生類的例項物件也無法訪問這些私有成員。如果派生類為公有繼承,基類成員保持自己的訪問級別 基類的public成員為派生類的public成員,基類的protected成員為派生類...