C 充電站(四) 繼承和派生

2021-09-24 02:13:35 字數 1206 閱讀 8641

在不同類中,資料成員和函式成員一般是不同的,但有時會有部分相同。所謂的繼承就是在乙個已存在的類上建立乙個新的類,已存在的類稱為父類或者基類,新建立的類稱為派生類或者子類,乙個新類從已有的類那裡獲得其已有特性,這叫做類的繼承,通過繼承,乙個新建子類從已有的父類那裡獲得父類的特性,從另一角度來說,從已有的類引數乙個新的子類,稱為類的派生。

派生類繼承了基類的所有資料成員和函式成員,並可以對成員作必要的增加或者調整,乙個基類可以派生出多個派生類,每乙個派生類又可以作為基類再派生處新的派生類,因此基類和派生類是相同而言的。

上述過程是乙個派生類從乙個基類派生出來的,這種稱為單繼承。乙個派生類不僅可以從乙個基類派生,也可以從多個基類派生,乙個派生類有兩個或者多個基類的稱為多重繼承。

派生類的宣告方式如下:

class student1:public student

對於多重派生的建構函式,有格式:

派生類建構函式名(總參數列):基類1建構函式(參數列),基類2建構函式(參數列),基數3建構函式(參數列)

{派生類中新增資料成員初始化語句;

}如果派生類中會保留該間接共同基類資料成員的多份同名成員,在派生類物件名後增加直接基類名,以避免產生二義性,使其唯一地標識乙個成員,如c1.a::display()。

虛基類在繼承間接共同基類時只保留乙份成員,經過關鍵字宣告後,當基類通過多條派生路徑被乙個派生類繼承時,該派生類只繼承該基類一次,即基類成員只保留一次。

class a

};class b:virtual public a

};class c:virtual public a

}class d:public b,public c

};

在最後的派生類中不僅要負責對其直接基類進行初始化,還要負責對虛基類初始化。

只能用子類物件對其基類物件複製,而不能用基類物件對其子類物件複製,同一基類的不同派生類之間也不能複製。派生類物件可以替代基類物件向基類物件的引用進行賦值或初始化,如果函式的引數是基類物件或基類物件的引用,相應的實參可以用子類物件。派生類物件的位址可以賦給指向基類物件的指標變數。

在乙個類中以另乙個類的物件作為資料成員,稱為類的組合。

class teacher

;class birthdate

;class professor:public teacher

類之間不是「是」的關係,而是有的關係。

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 派生類名 派生型別 基類名 注 括號內是派生類自己的成員和成員函式。乙個類的私有成員只能被它的成員函式和友員訪問,不能...

C 繼承和派生

在c 語言中,乙個 派生類可以從乙個 基類派生,也可以從多個基類派生。從乙個基類派生的繼承稱為單繼承 從多個基類派生的繼承稱為 多繼承。派生類的定義格式 單繼承的定義格式如下 1 2 3 4 class 派生類名 繼承方式 基類名 public 表示公有繼承 private 表示私有繼承 prote...