繼承是物件導向的三大特性之一
定義類時,下級別的成員除了擁有上一級的共性,還有自己的特性
6.1 繼承的基本語法
作用:減少**重複量
語法:class 子類 : 繼承方式 父類
例:class mypage : public basepage
子類也稱為派生類、父類也稱為基類6.2 繼承方式派生類中的成員,包含兩大部分:一類是從基類繼承過來的,一類是自己增加的成員。從基類繼承過來的表現其共性,新增的表現其個性
繼承方式一共有三種:
保護繼承
私有繼承
6.3 繼承中的物件模型
父類中所有非靜態成員屬性都會被子類繼承下去。父類中私有成員屬性,是被編譯器隱藏了,因此是訪問不到,但是確實被繼承下去了。
//例:
class base;
class son : public base;
void test()
6.4 繼承中構造和析構順序
子類繼承父類後,建立子類物件,也會呼叫父類的建構函式
繼承中的構造和析構順序如下:
//例:
class base
~base()
};class son : public base
~son()
};void test()
------------
//輸出
base的建構函式
son的建構函式
son的析構函式
base的析構函式
6.5 繼承同名成員處理方式
例:s.base::m_a
或s.base::func()
//測試案例
#include using namespace std;
class base
void func()
int m_a;
};class son : public base
void func()
int m_a;
};void test01()
void test02()
int main()
注意事項:6.6 繼承同名靜態成員處理方式如果子類**現和父類同名的成員函式,子類中的同名成員會隱藏掉父類中所有同名成員函式(包括過載)。如果先要訪問父類同名成員,需要加作用域
靜態成員和非靜態成員出現同名,處理方式一致
#include using namespace std;
class base
};int base::m_a = 100;
class son : public base
};int son::m_a = 200;
void test01()
void test02()
int main()
6.7 多繼承語法
c++允許乙個類繼承多個類
語法:class 子類 : 繼承方式 父類1, 繼承方式 父類2...
//例:
class son : public base1, public base2{
如果多繼承中父類出現了同名情況,子類使用時要加作用域
//例:
cout << "base1 - m_a = " << s.base1::m_a << endl;
cout << "base2 - m_a = " << s.base2::m_a << endl;
6.8 菱形繼承
概念:
兩個派生類繼承同乙個類
又有某個類同時繼承這兩個類
這種繼承稱為菱形繼承
菱形繼承的問題:
son1繼承了base的資料,son2也繼承了base的資料,當grandson使用資料時,就會產生二義性
解決方法:兩個父類因為相同的資料,需要加以作用域區分grandson繼承來自base的資料有兩份,但實際上有乙份就可以g.son1::m_a = 100
利用虛繼承,解決菱形繼承資料重複的問題。發生虛繼承之後,資料只有乙個,且可以不加作用域直接訪問。在繼承前加上關鍵字virtual。此時的base稱為虛基類。
class son1 : virtual public base
參考:黑馬程式設計師匠心之作|c++教程從0到1入門程式設計,學習程式設計不再難鏈結:
C 筆記 繼承
函式的呼叫過程 棧楨 一 繼承概念 1 在c 中,所謂的 繼承 就是在乙個已存在的類的基礎上建立乙個新的類。已經存在的類稱為 基類 base class 或 父類 father class 新建的類稱為 派生類 derived class 或 子類 son class 2 繼承機制是物件導向程式設計...
c 繼承筆記
一 什麼是繼承?c 允許乙個類繼承另外乙個類的所有內容 提高了 的復用性 二 繼承的方式 public 2 可訪問 可繼承 protected 1 不可訪問 可繼承 private 0 不可訪問 不可繼承 派生類中繼承來的元素是什麼許可權,取決於繼承方式和基類成員許可權的較小值。基類的private...
筆記 C 繼承
1.1 什麼是繼承 在c 中,如果類c1通過繼承已有類c而建立,則將c1稱作派生類,將c稱作基類,派生類會繼承基類中定義的所有屬性和方法。1.2 派生類的定義 定義派生類的語法為 1 class 派生類名 繼承方式 基類名2 其中,繼承方式包括public protected private三種。1...