C 繼承與派生

2021-07-24 10:36:29 字數 1555 閱讀 2621

1.什麼是繼承

在c++類中包含了若干個資料成員和成員函式,在不同的類中資料成員和成員函式是不相同的,但有時倆個類的內容基本相同或有一部分相同。

例如:「公馬」繼承了「馬」的全部特性,加上「雄性」的特性。「白公馬」繼承了「公馬」的全部屬性。所以繼承是已存在類的基礎上建立乙個新的類。「馬」為「基類」或「父類」,而新建立的類為「派生類」或「子類」

繼承的定義格式:class student1(派生類即子類):acess-label(繼承型別public,protected,private) baseclassname(基類即父類)

2.派生類的繼承方式

public:公有繼承   private:私有繼承  protected:保護繼承  如果不寫繼承方式則預設為prrivate

派生類成員的訪問屬性

(1)公有繼承public:基類的public和protected在派生類中保持原有的訪問屬性,但私有成員為基類私有。

(2)私有繼承private:基類的public和protected在派生類中成了私有成員。其私有成員依然為基類私有

(3)保護繼承protected:基類的public和protected在派生類中成了保護成員,但私有成員仍未基類私有

保護成員:不能被外界引用,但可以被派生類成員引用。

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

3.派生類的預設成員函式

派生類建構函式一般形式為:student1(int n,string nam,char s,int a,string ad):student (n,nam,s)

派生類建構函式名(總引數列表):基類建構函式名(引數列表)

繼承關係中建構函式的呼叫過程:先執行基類建構函式,再呼叫派生類建構函式。

釋放時先釋放派生類建構函式,再釋放基類建構函式

**1、基類沒有預設建構函式,派生類必須要在初始化列表中顯式給出基類名和引數列表。

2、基類沒有定義建構函式,則派生類也可以不用定義,全部使用預設建構函式。

3、基類定義了帶有形參表建構函式,派生類就一定定義建構函式。

派生類的析構函式:

先執行派生類自己的析構函式,對派生類新增加的成員進行清理。再執行子物件的建構函式,對子物件進行清理,最後呼叫基類的建構函式,對基類建構函式進行清理。

4.繼承體系中的作用域

子類和父類中有同名成員,子類成員將遮蔽父類對成員的直接訪問

5.繼承的轉化

1.子類物件可賦值給父類,但父類物件不可賦值給子類

2.父類物件的指標可以指向子類物件,但子類物件的指標不可以指向父類

6.多重繼承

乙個派生類有倆個或倆個以上的基類稱為多重繼承。宣告多重記載的方法:

class d:public a,private b,protected c

但多重繼承會因為繼承成員同名產生二義性。為了解決這個問題引入虛繼承:

class 派生類名:virtual 繼承方式 基類名

C 繼承與派生

派生新類 吸收已有類的成員 調整已有類成員和新增新的成員 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,派生類成員宣告 繼承方式有 public protected private 預設 公有繼承 基類的公有和保護乘員的訪問屬性在派生類中不變,基類的私有成員不能直接訪問 型別相容規則...

c 繼承與派生

繼承 與派生 一 派生方式的不同的表現 1 派生類在類內成員對基類成員 的訪問許可權 2 派生類的物件對基類成員的訪問許可權。二 公有繼承 1 基類protected和public的成員在派生類中訪問屬性保持不變 2 基類的private成員在派生類中不可訪問。3 派生類的成員 即派生類內 可以直接...

c 繼承與派生

一 基本概念 1 類的繼承,是新的類從已有類那裡得到已有的特性。或從已有類產生新類的過程就是類的派生。原有的類稱為基類或父類,產生的新類稱為派生類或子類。2 派生類的宣告 class 派生類名 繼承方式 基類名1,繼承方式 基類名2,繼承方式 基類名n 3 乙個派生類可以同時有多個基類,這種情況稱為...