派生與繼承 多重派生

2021-08-19 17:44:09 字數 2623 閱讀 2366

1.理解下面的程式,並在

vc++6.0

下執行檢視結果,回答程式後面的問題。

class

cbase1

~cbase1()

void

print()

protected

:int

a;};

class

cbase2

~cbase2()

void

print()

protected

:int

b;};

class

cderive :

public

cbase1,

public

cbase2

~cderive()

void

print()

private

:cbase1 b1;

cbase2 b2;

intc;

};void

main()

問題一:指出並改正以上程式中存在的錯誤,並分析該程式的輸出結果。、

問題一:該函式沒有標頭檔案及命名空間。

問題二:在基類和派生類中,沒有合適的建構函式可用。

結果分析:

類cderive同時繼承類

cbase1

和cbase2

,所以類

cbase1

和cbase2

先後被構造第一次,在類

cderive

的私有成員中,建立了兩個物件

cbase1 b1;cbase2 b2;

所以類cbase1和

cbase2

先後被構造第二次,四次構造完成之後,再構造類

cderive

的建構函式。相反析構過程與構造過程相反,從派生類到基類依次析構。

2.理解下面的程式,並在

vc++6.0

下執行檢視結果,回答程式後面的問題。

#include

using namespace

std;

//*************************************

class

aint

geta()

private

:int

a;};

//*************************************

class

b1:public

aint

getb1()

private

:int

b1;};

//************************************

class

b2:public

aint

getb2()

private

:int

b2;};

//************************************

class

c1:public

b1int

getc1()

private

:int

c1;};

//************************************

class

c2:public

b1int

getc2()

private

:int

c2;};

//************************************

class

c3:public

b1,public

b2int

getc3()

private

:int

c3;};

//******************************************

void

main( )

問題一:在不改變原有程式意圖的前提下,改正上面程式,使程式正確輸出,並單步執行分析程式執行的過程。

改正:

此程式中存在虛繼承,b1、

b2類虛繼承a類,

a是他們的虛基類,應在b1、

b2 類前加關鍵字

virtual

。 分析:

main函式從類

a開始執行,創立了乙個類

a的空間,通過

a->b1,a->b2

的路徑初始化基類,所以兩次呼叫了

a類的建構函式。而c1,

c2分別呼叫了b1,

b2,所以c1,

c2都呼叫了b1,

b2的建構函式

,且又兩次建立了a的建構函式

。又通過了b1->c3,b2->c3的路徑,

c3呼叫了

b1,b2,a

的建構函式。

多重繼承 派生類

作 者 劉慧豔 完成日期 2014 年6月20日 版 本 號 v1.0 問題描述 分別宣告teacher 教師 類和cadre 幹部 類,採用多重繼承方式 由這兩個類派生出新類teacher cadre 教師兼幹部 類。要求 1 在兩個基類中都包含姓名 年齡 性別 位址 等資料成員。2 在teach...

繼承與派生

實驗內容 建立乙個基類,兩個派生類,讓每乙個派生類都包含乙個函式area 分別用來返回矩形和三角形的面積。用建構函式對height和width進行初始化。要求通過基類指標訪問虛函式的方法。純虛函式 virtual double area 0 純虛函式的作用是在基類中為派生類保留乙個函式的名字,以便派...

繼承與派生

在c 中,所謂 繼承 就是在乙個已存在的類的基礎上建立乙個新的類。已存在的類成為 基類 新建立的類成為 派生類 乙個新類從已有的類那裡獲得其已有特性,這種現象成為累的繼承。從另一角度說,從已有的類產生乙個新的子類,稱謂累的派生。派生類的宣告方式 class 派生類名 繼承方式 基類名 派生類新增加的...