C 筆記 繼承

2021-10-22 01:26:31 字數 2573 閱讀 1885

繼承是物件導向的三大特性之一

定義類時,下級別的成員除了擁有上一級的共性,還有自己的特性

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_as.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使用資料時,就會產生二義性

解決方法:兩個父類因為相同的資料,需要加以作用域區分

g.son1::m_a = 100
grandson繼承來自base的資料有兩份,但實際上有乙份就可以

利用虛繼承,解決菱形繼承資料重複的問題。發生虛繼承之後,資料只有乙個,且可以不加作用域直接訪問。

在繼承前加上關鍵字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...