繼承
繼承是物件導向程式設計使用的**復用的手段,可以在保持原有類的特性的基礎上進行擴充套件,增加新的類。
先看上面的**,有兩個類,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 繼承總結
繼承概念 在原有的類不變的基礎之上,新增一些函式,對功能進行拓展 繼承特點 是物件導向程式設計的的層次結構 是實現由簡單到複雜的認知過程 基類 被繼承的類 派生類 在繼承之後產生的新類 例子 手機系統會不斷更新,然而,我們的手機更新之後的功能只是對原來的功能進行優化和新增 繼承格式 派生類名 繼承許...