繼承概念
在原有的類不變的基礎之上,新增一些函式,對功能進行拓展
繼承特點
是物件導向程式設計的的層次結構
是實現由簡單到複雜的認知過程
基類:被繼承的類
派生類:在繼承之後產生的新類
例子
手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增
繼承格式
派生類名 :繼承許可權 基類名
繼承許可權
注: 1、public 表示派生類中為 公有成員
2、protect 表示派生類中為 受保護成員(派生類中可以訪問,但是類外無法訪問,該訪問限定符因繼承而出現)
3、private 表示派生類中為 私有成員
4、不可見 表示 派生類中無法訪直接問該成員
繼承許可權總結
public繼承是介面繼承,保持is-a原則,即每乙個子類的是父類的物件
protect/private繼承 是乙個實現繼承,基類的部分成員並不是完全成為子類介面的一部分,保持has-a原則(聚合原則)
class關鍵字預設的繼承方式是private, struct關鍵字預設的繼承方式是public
派生類預設成員函式(c98)
建構函式
1、 構造基類成員和派生類成員的呼叫次序:先呼叫派生類的建構函式(初始化列表中先構造基類成員再構造派生類成員),再呼叫基類建構函式構造基類成員之後,返回派生類建構函式繼續構造派生類成員。
拷貝建構函式
析構函式
1、先呼叫派生類析構之後,呼叫基類析構(原因是:先建立的後銷毀)
賦值操作符過載
取位址操作符過載
const修飾的取位址操作符過載
(c++ 11中新增兩個成員函式)
移動構造
移動賦值
繼承體系中的作用域
1、基類和派生類不是同一塊作用域
2、同名隱藏問題:因為派生類中有與基類同名的成員,派生類中將隱藏基類的同名成員,不能直接訪問,可以通過 (基類名::基類成員)的方式訪問
賦值相容規則
1、前提:在public繼承許可權下
2、原因:每乙個子類都可以是父類的物件
3、結果:
(1)子類物件可以賦值給父類物件,反之不行(會越界)。
(2)父類物件的指標或引用可以指向子類的物件,反之不然(需要強轉完成)(會越界)
繼承體系下派生類的物件模型
1、單繼承
2、多繼承
3、菱形繼承
4、虛擬繼承
5、菱形虛擬繼承
謝謝關注!!
C 繼承總結
繼承是物件導向程式設計中軟體重用的關鍵技術。繼承機制使用已定義的類作為基礎建立新的類定義,新的類是原有類的資料及操作與新類所增加的資料及操作的組合。新的類把原有的類作為基類引用,而不需要修改原有類的定義。新的類作為派生類引用。這種可擴充 可重用技術大大降低了大型軟體的開發難度。c 中描述類繼承關係的...
C 繼承總結
一 基類和派生類 類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式說明 其中,基類名錶 的語句格式如下 訪問控制 基類名1,訪問控制 基類名2,訪問控制 是表示繼承許可權的關鍵字,稱為訪問描述符。可以是 如果省略訪問描述符,則c 認為是私有繼承。如果用關鍵字struct 而不...
C 繼承總結
繼承 1 三種類成員訪問限定符繼承 2 公有繼承 保護繼承 私有繼承 基類的私有成員在派生類是無法被訪問的,如果乙個基類不想讓基類物件之間訪問自己的成員,但是需要在派生類中訪問,那麼可以將該成員設定為 protected 保護類 公有繼承是乙個介面繼承,所有基類可用的成員對子類也可用,每乙個派生類都...