1.1 什麼是繼承
在c++中,如果類c1通過繼承已有類c而建立,則將c1稱作派生類,將c稱作基類,派生類會繼承基類中定義的所有屬性和方法。
1.2 派生類的定義
定義派生類的語法為:
1class 派生類名:繼承方式 基類名2;
其中,繼承方式包括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
(2)形式2
1派生類名(形參列表)
2
派生類中析構函式的定義形式與基類完全相同,如下:
1~派生類名()
2
1.5.2 建構函式和析構函式的呼叫順序
當建立派生類物件時,先呼叫基類的建構函式,再呼叫派生類的建構函式;析構函式呼叫順序總是與構造函式呼叫順序相反。
1.6 型別相容(這個有點繞,需要好好理解下)
型別相容是指在基類物件可以出現的任何地方,都可以用共有派生類的物件來代替。型別相容所指的是如下三種情況:
(1)派生類物件可以賦值給基類物件;
(2)派生類物件可以初始化基類的引用;
(3)基類指標可以指向派生類物件。
注意:用派生類物件替代基類物件進行賦值操作後,通過基類物件、基類物件引用和基類指標只能訪問基類成員。
雖然用派生類代替了基類之後,就可以把派生類物件當做基類物件使用,但是只能訪問基類成員。
1.7 多重繼承
1.7.1 多重繼承的語法
在乙個多重繼承關係中,定義派生類的語法為:
1class 派生類名:繼承方式 基類名1,繼承方式 基類名2,...,繼承方式 基類名n2;
其中,基類名的順序決定了建構函式的順序。
1.7.2 二義性問題和虛基類
二義性問題:多個基類如果存在相同的成員,就會帶來二義性問題。派生類物件不知道應該訪問哪個基類的成員。
解決二義性問題的步驟為:
(1)為多重繼承關係中具有相同成員的兩個基類c1和c2定義乙個共同的基類c,基類c中包括c1和c2中相同的成員,同時將這些相同的成員從c1和c2中刪除。
(2)c1和c2都作為c類的派生類,在c1和c、c2和c這兩個繼承關係中將c宣告為虛擬繼承方式,此時c類被稱為虛基類。
虛擬繼承的語法為:
1class
派生類名:
virtual
繼承方式 虛基類名
2
好了,今天的學習就到這裡了。
參考:物件導向程式設計----c++高階語言 主編 趙巨集
C 筆記 繼承
函式的呼叫過程 棧楨 一 繼承概念 1 在c 中,所謂的 繼承 就是在乙個已存在的類的基礎上建立乙個新的類。已經存在的類稱為 基類 base class 或 父類 father class 新建的類稱為 派生類 derived class 或 子類 son class 2 繼承機制是物件導向程式設計...
c 繼承筆記
一 什麼是繼承?c 允許乙個類繼承另外乙個類的所有內容 提高了 的復用性 二 繼承的方式 public 2 可訪問 可繼承 protected 1 不可訪問 可繼承 private 0 不可訪問 不可繼承 派生類中繼承來的元素是什麼許可權,取決於繼承方式和基類成員許可權的較小值。基類的private...
C 筆記 繼承
繼承是物件導向的三大特性之一 定義類時,下級別的成員除了擁有上一級的共性,還有自己的特性 6.1 繼承的基本語法 作用 減少 重複量 語法 class 子類 繼承方式 父類 例 class mypage public basepage 子類也稱為派生類 父類也稱為基類 派生類中的成員,包含兩大部分 ...