繼承與派生

2021-09-22 22:31:31 字數 1654 閱讀 7713

一、通過繼承,我們可以用原來的資料型別來定義乙個新的資料型別,定義的新型別既有原來資料中的成員,也能自己新增新的成員

我們一般把原來的資料型別稱為基類或者父類,新的資料型別為派生類,或者子類,在本篇部落格中base為基類,deriver為派生類

繼承的本質是**復用

如上圖所示繼承與派生的關係

class base

void show()

static void show1()

public:

int ma;

};class derive : public base

void print()

private:

int mb;

};

1、派生類的記憶體布局

2、派生類繼承了基類的什麼?

不能繼承的:

(1)構造和析構

(2)有緣關係

派生類繼承了基類中除了構造和析構以外所有的成員變數和成員方法、型別和作用域

3、繼承方式

(1)公有繼承 (public繼承)

公有繼承的特點是基類的公有成員和保護成員作為派生類的成員時,它們都保持原有的狀態,而基類的私有成員仍然為私有的,不能被這個派生類的子類所訪問。

(2)保護繼承(proteced繼承)

保護繼承的特點是基類的所有公有成員和保護成員都作為派生類的保護成員,並且只能被它的派生類成員函式或友元函式訪問,基類的私有成員仍然為私有的。

(3)私有繼承(private繼承)

私有繼承的特點是基類的公有成員和保護成員都作為派生類的私有成員,並且不能被這個派生類的子類所訪問。

4、類之間的關係

(1)組合 has_a a part of

(2)繼承 is_a a kind of

(3)**

5、派生類的構造和析構方式

當基類中沒有預設的建構函式時,在派生類中的建構函式初始化列表中應當指明基類的構造方式

(1)構造方式

派生類物件在構造時先構造基類部分,在構造派生類部分

(2)析構方式

派生類物件在析構時,先析構派生類部分,在析構基類部分

6、基類和派生類指標或引用的相互指向或引用

class base

void show()

void show(int flag)

protected:

int ma;

};class derive : public base

void show()

private:

int mb;

};int main()

基類的指標或引用可以指向或引用派生類物件

不允許派生類的指標或引用指向或引用基類物件

如果派生類指標指向基類物件,派生類指標可以訪問派生類的成員變數或者成員函式,但是基類中沒有,所以訪問會出錯

派生與繼承 多重派生

1 理解下面的程式,並在 vc 6.0 下執行檢視結果,回答程式後面的問題。class cbase1 cbase1 void print protected int a class cbase2 cbase2 void print protected int b class cderive publ...

繼承與派生

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

繼承與派生

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