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 乙個派生類可以同時有多個基類,這種情況稱為...