在c++中,所謂「繼承」就是在乙個已存在的類的基礎上建立乙個新的類。已存在的類稱為「基類」或「父類」,新建立的類稱為「派生類」或「子類」。
單繼承:乙個子類只有乙個直接父類時稱這個繼承關係為單繼承;
多繼承:乙個子類有兩個或多個以上的父類時稱這個繼承關係為多繼承
菱形繼承(鑽石繼承):
class person
;class student:public person
;class teacher:public person
;class assistant:public student,public teacher
;int main()
輸出的結果為20(後面詳述菱形繼承)
2.派生類的宣告方式
class 派生類名 : [繼承方式] 基類名 ;
繼承方式:public(公有繼承) protected(保護繼承) private(私有繼承)
當沒有給出繼承方式時,使用關鍵字class宣告派生類預設繼承方式是private,使用關鍵字struct時預設繼承方式是public.
構造乙個派生類包含三部分工作:
從基類接受成員;
調整從基類接受的成員;
(調整:指定繼承方式;宣告與基類相同名字的成員或函式,函式引數列表也要相同,構成隱藏,若引數列表不同,並不能認為它構成了過載,因為兩個函式並不在同一作用域中,不滿足過載的條件,具體是什麼還不太了解,但類外不能呼叫該基類中的函式;)
在宣告派生類是增加成員;
不同的繼承方式決定了基類成員在派生類中的訪問屬性
基類的公有成員和保護成員在派生類中保持原有的訪問屬性,其私有成員被繼承,但任為基類私有(不可見)
公有成員:在基類、派生類和類外均可訪問
基類的公有成員和保護成員在派生類變為私有成員,其私有成員被繼承,但任為基類私有(都不可見)
私有成員:基類的私有成員只能在基類內部訪問,派生類和類外均不可訪問
基類的共有成員和保護成員在派生類中變成了保護成員,其私有成員被繼承,但任為基類私有(不可見)
保護成員:基類的私有成員可以在基類內部和派生類中訪問,類外不允許訪問
公用繼承中,派生類直接訪問基類的私有成員是不允許的,只有通過基類的公有成員函式來引用基類的私有成員;
私有繼承中,不能通過派生類的物件來訪問從私有基類繼承過來的任何成員或函式,但可以通過派生類的成員函式呼叫私有基類的公用成員函式來實現對基類私有成員的訪問。
基類的建構函式和析構函式時不能被繼承的
建構函式一般形式:
派生類的建構函式名(總引數列表)
:基類的建構函式名(引數列表)
[,子類物件(引數列表)]
繼承關係中建構函式的呼叫順序
派生類的建構函式(按照繼承列表的順序)------>初始化列表中呼叫基類建構函式----->基類建構函式體----> 派生類的建構函式體
繼承關係中析構函式的呼叫順序
派生類的建構函式---->派生類的建構函式體---->基類的析構函式--->基類的析構函式體(與建構函式相反)
說明:必須顯示的定義建構函式情景一:存在兩個類,a和b,b類中定義了a類的物件,a類中定義了沒有預設的構造 函式,則b類一定要顯示給出建構函式
事例:
class test1
private:
int _a;
};class b:public a
private:
int _b;
};int main()
C 中的繼承
一 繼承 什麼是繼承 繼承是允許重用現有類去建立新類的過程。分類的原則是乙個類派生出來的子類具有這個類的所有非私有的屬性。1 繼承c 中的類 c 不支援多重繼承,c 類始終繼承自乙個基類 如果未在宣告中指定乙個基類,則繼承自 system.object 派生類繼承基類的語法如下 using syst...
C 中的繼承
繼承,資料抽象和動態繫結是物件導向程式設計的核心思想。使用繼承,可以定義相似的型別並對其相似關係進行建模。通過繼承聯絡在一起的類構成一種層次關係,通常在層次關係的根部有乙個基類,其他類則直接或間接地從基類繼承而來,這些繼承得到的類稱為派生類。下面就讓我們一起來 繼承中的一些常見問題。1.繼承方式cl...
C 中的繼承
繼承是c 中的三大特性之一。繼承機制是物件導向程式設計使 可以復用的最重要的手段,它允許程式設計師在保持原有類特性的基礎上進行擴充套件,增加功能。這樣產生新的類,叫做派生類。繼承定義的格式 class deriveclassname 派生類名 asecc label 繼承型別 baseclassna...