【筆記】C++ 繼承

來源:互聯網
上載者:User

1.1 什麼是繼承

  在C++中,如果類C1通過繼承已有類C而建立,則將C1稱作衍生類別,將C稱作基類,衍生類別會繼承基類中定義的所有屬性和方法。

1.2 衍生類別的定義

  定義衍生類別的文法為:

1 Class 衍生類別名:繼承方式  基類名
2 {
3 衍生類別成員說明;
4 };

  其中,繼承方式包括public、protected、private三種。

1.3 函數重定義

  對於基類中的函數,可以再衍生類別中對其重新定義、實現新的功能。

  區別函數重定義和函數重載:

  函數重載:要求函數形參不同,在實際調用時根據傳入的實參來決定執行哪個函數。

  函數重定義:要求衍生類別中的函數原型與基類中的函數原型一樣,在實際調用時根據物件類型來決定調用基類中定義的函數還是衍生類別中重定義的函數。

1.4 衍生類別的繼承方式

  繼承方式包括public、protected、private三種,總結如下:

繼承方式      訪問方式

public

private

protected

public

public

不可訪問

protected

private

private

不可訪問

private

protected

protected

不可訪問

protected

1.5 衍生類別的建構函式與解構函式

  衍生類別建構函式的作用主要是對衍生類別中新添加的資料成員做初始化工作。同樣,衍生類別解構函式的作用主要是清除衍生類別中新添加的資料成員,釋放它們所佔據的系統資源。

1.5.1建構函式和解構函式的定義

  衍生類別中建構函式的定義形式有如下兩種:

(1)形式1

1 衍生類別名(形參列表):基類名(實參列表)
2 {
3 //衍生類別中資料成員的初始化
4  }

(2)形式2

1 衍生類別名(形參列表)
2 {
3 //衍生類別中資料成員的初始化
4  }

  衍生類別中解構函式的定義形式與基類完全相同,如下:

1 ~衍生類別名()
2 {
3 //釋放衍生類別中資料成員所佔據的系統資源
4  }

 1.5.2 建構函式和解構函式的調用順序

  當建立衍生類別對象時,先調用基類的建構函式,再調用衍生類別的建構函式;解構函式調用順序總是與建構函式調用順序相反。

 1.6 類型相容(這個有點繞,需要好好理解下)

  類型相容是指在基類對象可以出現的任何地方,都可以用共有衍生類別的對象來代替。類型相容所指的是如下三種情況:

  (1)衍生類別對象可以賦值給基類對象;

  (2)衍生類別對象可以初始化基類的引用;

  (3)基類指標可以指向衍生類別對象。

注意:用衍生類別對象替代基類對象進行賦值操作後,通過基類對象、基類對象引用和基類指標只能訪問基類成員。

  雖然用衍生類別代替了基類之後,就可以把衍生類別對象當做基類對象使用,但是只能訪問基類成員。

1.7 多重繼承

1.7.1  多重繼承的文法  

  在一個多重繼承關係中,定義衍生類別的文法為:

1 Class 衍生類別名:繼承方式 基類名1,繼承方式 基類名2,...,繼承方式 基類名n
2 {
3 衍生類別成員聲明;
4 };

  其中,基類名的順序決定了建構函式的順序。

1.7.2  二義性問題和虛基類

  二義性問題:多個基類如果存在相同的成員,就會帶來二義性問題。衍生類別對象不知道應該訪問哪個基類的成員。

  解決二義性問題的步驟為:

  (1)為多重繼承關係中具有相同成員的兩個基類C1和C2定義一個共同的基類C,基類C中包括C1和C2中相同的成員,同時將這些相同的成員從C1和C2中刪除。

  (2)C1和C2都作為C類的衍生類別,在C1和C、C2和C這兩個繼承關係中將C聲明為虛擬繼承方式,此時C類被稱為虛基類。

  虛擬繼承的文法為:

1 class 衍生類別名:virtual 繼承方式 虛基類名
2 {
3 ...
4 }

好了,今天的學習就到這裡了。

...

參考:

  物件導向程式設計----C++進階語言  主編 趙宏

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.