C 繼承之繼承基礎

2021-08-19 15:20:36 字數 2208 閱讀 6540

一、繼承的相關概念

繼承是⼀種復⽤⼿段,在繼承關係⾥子類繼承父類的成員,由此達到復⽤的⽬的。通過繼承定義乙個類,繼承是型別之間的關係建模,共享公有的東西,實現各自本質不同的東西。

二、三種訪問限定符&繼承關係

三、繼承的重要說明1.子類擁有父類的所有成員變數和成員函式

2.子類就是一種特殊的父類

3.子類物件可以當作父類物件使用

4.子類可以擁有父類沒有的方法和屬性

四.派生類(子類)的訪問控制

1.如若是public繼承,父類在子類中保持原有訪問類別

2.如若是protect繼承,父類的public變為protected,private依然是private,protected依然是protected

3.如若是private繼承,父類在子類中都是private

五、實現乙個簡單的繼承

class parent//基類  

};

class child :public parent//派生類,這裡的public 可以也可以是private或者protected

;

總結:1.

基類的私有成員在派生類中是不能被訪問的,如果一些基類成員不想被基類物件直接訪問,但需要在派生類中能訪問,就定義為保護成員。可以看出保護成員限定符是因繼承才出現的。

2. public

繼承是乙個介面繼承,保持

is-a原則,每個父類可用的成員對子類也可用,因為每個子類物件也都是乙個父類物件。

3. protetced/private

繼承是乙個實現繼承,基類的部分成員並未完全成為子類介面的一部分,是

has-a原則,所以非特殊情況下不會使用這兩種繼承關係,在絕大多數的場景下使用的都是公有繼承。

4.不管是哪種繼承方式,在派生類內部都可以訪問基類的公有成員和保護成員,但是基類的私有成員存在但是在子類中不可見(不能訪問)。

5.使用關鍵字class時預設的繼承方式是private,使用struct時預設的繼承方式是public,不過最好顯示的寫出繼承方式。

6.在實際運用中一般使用都是public繼承,極少場景下才會使用protetced/private繼承.

六、繼承與轉換

型別相容性原則:在需要基類物件的任何地方都可以使用公有子類物件代替,通過公有繼承派生類得到了基類出構造和析構外的所有成員

①子類物件可以當作父類物件使用

②子類物件可以直接賦值給父類物件(切割/切片)

③子類物件可以直接初始化父類物件

④父類指標/引用可以指向子類物件

⑤子類指標/引用不能指向父類物件(可以通過強制型別轉換實現)

class parent//基類  

protected:

};

class child :public parent

; int main()

七、問題

答:①在子類物件構造時,需要呼叫父類物件的建構函式對其繼承來的成員進行初始化

②在子類物件析構時,需要呼叫父類析構函式對其繼承得到物件成員進行清理

繼承中構造和析構的呼叫原則:

①子類物件在建立時首先呼叫父類的建構函式

②父類建構函式執行結束後,執行子類建構函式

③當父類建構函式中有引數時,需要在子類的初始化列表中顯示呼叫

④析構函式呼叫的順序與建構函式相反

八、繼承體系中的作⽤域

1、在繼承體系中基類和派⽣類都有獨⽴的作⽤域。

2、⼦類和⽗類中有同名成員,⼦類成員將遮蔽⽗類對成員的直接訪問,這就構成了隱藏,又稱為重定義。

3、在⼦類成員函式中,可以使⽤基類::基類成員訪問。

4、注意在實際中在繼承體系⾥⾯最好不要定義同名的成員。

c 基礎之繼承

一.繼承的概念 繼承 inheritance 機制是 物件導向程式設計使 可以復用的最重要的手段,它允許程式在保持原有類特性的基礎上進行擴充套件,增加功能。這樣產生新的類,稱派生類。繼承呈現了物件導向程式設計的層次結構,體現了由簡單到複雜的認知過程。二.繼承的引入 通過以下的手機發展史,我們可以看到...

C 基礎之繼承

在c 中,繼承的格式定義為 class 派生類類名 訪問限定符 基類類名1 訪問限定符 基類類名2 派生類特有的成員 訪問限定符有3種 public protected private。如果為private 表示私有繼承,即基類的所有公有或者保護成員成為派生類的私有成員 如果為protected 即...

C 繼承之成員繼承

一 子類繼承父類哪些成員?1.繼承的效果 子類繼承父類,也就意味著在子類中可以訪問到父類中定義的成員。那麼在父類中定義的成員 字段,屬性,方法 哪些在子類中可以訪問到,哪些訪問不到那?2.欄位 字段可以使用 private 和 public 進行修飾,但 80 的時候使用 private 修飾。pr...