C++類和對象知識點整理六-----多繼承

24、C++類的多繼承
派生類都只有一個基類,稱爲單繼承。除此之外,C++也支持多繼承,即一個派生類可以有2個或者多個基類。


b.多繼承的缺點
多繼承容易讓代碼邏輯複雜,思路混亂,一直備受爭議,中小型項目中較少使用,後來的Java,c#,PHP等乾脆取消了多繼承


c.多繼承的語法也很簡單,將多個基類用逗號隔開即可,列如以聲明瞭類A,類B,類C,那麼可以這樣來聲明派生類D:
class D:public A,private B,protected C{
//類D新增加的成員
}


D是多繼承形式的派生類,她是以公有的方式繼承A類等。D根據不同的繼承方式獲取A,B,C中的成員,確定他們在派生類中的訪問權限。


d.多繼承形式下的構造函數和單繼承形式基本相同,知識要在派生類的構造函數中調用多個基類的構造函數如:
D(形參列表): A(實參列表), B(實參列表), C(實參列表){
    //其他操作
}
基類構造函數的調用順序和和它們在派生類構造函數中出現的順序無關,而是和聲明派生類時基類出現的順序相同。仍然以上面的 A、B、C、D 類爲例,即使將 D 類構造函數寫作下面的形式:
D(形參列表): B(實參列表), C(實參列表), A(實參列表){
    //其他操作
}
那麼也是先調用 A 類的構造函數,再調用 B 類構造函數,最後調用 C 類構造函數。


f:命名衝突
當2個或者多個積累中有同名的成員時 ,如果直接訪問該成員,就會產生命名衝突,編譯器不知道使用哪一個基類的成員,這個時候需要在成員名字前面加上類名和域解析符::,以顯式的指明使用哪一個類的成員,消除2義性。









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章