C 繼承總結

2021-09-29 05:26:42 字數 2806 閱讀 9671

繼承

繼承是物件導向程式設計使用的**復用的手段,可以在保持原有類的特性的基礎上進行擴充套件,增加新的類。

先看上面的**,有兩個類,student類中沒有定義name與int成員變數,為什麼在print函式當中,可以輸出值呢?

我們把上面這種定義稱為,student類繼承person類,其中person稱為父類(基類),student稱為子類(派生類)。上面的**可以給出乙個簡單的解釋,兒子可以使用其父親的一些東西。

繼承的定義

繼承包括:子類(派生類),繼承方式,父類(基類)

父類中有些東西,不想被繼承,所以可以通過給變其繼承方式來改變。

繼承方式:

但不同的繼承方式,也會產生不同的變換。

說明:

繼承底層資料模型

賦值相容規則

父類指標可以通過強制型別轉換賦值給子類的指標。

person *pp;

student *ss =

(student*

)pp;

繼承的作用域—產生同名覆蓋問題

class

person

protected

: string name =

"xiaoming"

;int age =18;

};class

student

:public person

protected

:int _id =

0001;}

;

派生類的預設成員函式

class

person

person

(const person& s)

:_name

(s._name)

person&

operator=(

const person& s)

cout <<

"person operator "

<< endl;

return

*this;}

~person()

protected

: string _name;

// 姓名};

class

student

:public person

student

(const student& s)

:person

(s),

age(s.age)

student&

operator=(

const student& s)

return

*this;}

~student()

private

:int age;

};

繼承與友元友元關係不能被繼承。基類的友元函式,不能訪問子類的成員。例如:父親的朋友,不是你的朋友。

繼承與靜態成員

基類定義了乙個static成員,則整個繼承體系中只有乙個靜態成員。

class

person

static

int _count;};

int person::_count;

class

student

:public person

;class

graduate

:public student

;

菱形繼承—鑽石繼承單繼承:乙個子類只有乙個父類

多繼承:乙個子類有多個父類

菱形繼承是多型別的一種:

C 繼承總結

繼承是物件導向程式設計中軟體重用的關鍵技術。繼承機制使用已定義的類作為基礎建立新的類定義,新的類是原有類的資料及操作與新類所增加的資料及操作的組合。新的類把原有的類作為基類引用,而不需要修改原有類的定義。新的類作為派生類引用。這種可擴充 可重用技術大大降低了大型軟體的開發難度。c 中描述類繼承關係的...

C 繼承總結

一 基類和派生類 類繼承關係的語法形式 class 派生類名 基類名錶 資料成員和成員函式說明 其中,基類名錶 的語句格式如下 訪問控制 基類名1,訪問控制 基類名2,訪問控制 是表示繼承許可權的關鍵字,稱為訪問描述符。可以是 如果省略訪問描述符,則c 認為是私有繼承。如果用關鍵字struct 而不...

C 繼承總結

繼承概念 在原有的類不變的基礎之上,新增一些函式,對功能進行拓展 繼承特點 是物件導向程式設計的的層次結構 是實現由簡單到複雜的認知過程 基類 被繼承的類 派生類 在繼承之後產生的新類 例子 手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增 繼承格式 派生類名 繼承許...