C 繼承與多型

2021-08-22 16:20:43 字數 1293 閱讀 4838

public繼承:父類的 public、protected保持不變,private 不可見

protected繼承:父類的 public 變為protected、protected保持不變、private 不可見

private繼承:父類的 public、protected 變為private,private 不可見

例項化子類:構造函式呼叫順序為先父類後子類

刪除子類物件:析構函式呼叫順序為先子類後父類

父類和子類函式名相同,不管返回值和引數是否相同。

父類中的同名函式仍然存在,子類中通過father::fun()訪問父類的同名函式

#include 

using

namespace

std;

# 父類

class father

};# 子類

class son: public father

};

父類和子類的函式/方法名、返回型別和參數列都要一樣

建構函式不能是虛函式

#include 

using

namespace

std;

# 父類

class father

};# 子類

class son: public father

};

正常情況下刪除父類物件時不會呼叫子類的虛構函式,虛析構函式可以解決。

# 父類中

virtual ~father()

# 子類中

~son()

包含純虛函式的類不能例項化。純虛函式在父類中不用定義,在需要例項化的子列中需要定義

#include 

using

namespace

std;

# 抽象類

class father

;# 子類

class son: public father

};

菱形繼承:b、c 繼承自 a 時b、c各有乙份a的類屬性,d繼承與b、c時,d會同時繼承 b、c 中的 a 的類屬性從而發生衝突。

虛繼承可以解決多繼承訪問不明確,只要在中間層虛繼承就行,相當於最父類的只有乙份類屬性,有點類似於靜態成員

class b: virtual

public a

; class c: virtual

public a

;

C 繼承與多型

派生類繼承基類 又稱父類 超類 的屬性和方法,在此基礎上可以進行修改或新增新的屬性和方法。class 派生類名 繼承方式 基類名 為了保護基類的資料封裝性,無論哪種繼承方式,積累的私有成員在派生類中都是不可見的。1.public繼承 基類的訪問許可權在派生類中不變。公有還是公有,保護還是保護,派生類...

C 繼承與多型

1 分析菱形繼承的問題。2 剖析虛繼承是怎麼解決二義性和資料冗餘的 首先,我們先來看乙個菱形繼承的程式。為了解決以上問題,我們引入虛繼承的語法。可以有效的解決菱形繼承的資料冗餘和二義性問題。1.虛繼承解決了菱形繼承體系裡子類物件包含多份父類物件的資料冗餘問題和浪費空間的問題。2.虛繼承看起來複雜,但...

C 繼承與多型

c 是一種物件導向的語言,最重要的乙個目的就是 提供可重用的 而類繼承就是c 提供來擴充套件和修改類的方法。類繼承就是從已有的類中派生出新的類,派生類繼承了基類的特性,同時可以新增自己的特性。實際上,類與類之間的關係分為三種 組合和繼承。以下是三種關係的 為了更好的理解 基類可以派生出派生類,基類也...