最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

C/C++編程筆記:C++入門知識丨繼承和派生

2020-07-28 15:04 作者:C語言編程__Plus  | 我要投稿

本篇要學(xué)習(xí)的內(nèi)容和知識結(jié)構(gòu)概覽


繼承和派生的概念

派生

通過特殊化已有的類來建立新類的過程, 叫做”類的派生”, 原有的類叫做”基類”, 新建立的類叫做”派生類”. 從類的成員角度看, 派生類自動地將基類的所有成員作為自己的成員, 這叫做”繼承”. 基類和派生類也可以叫做”父類”和”子類”, 也可以叫做”一般類”和”特殊類”.

繼承

類的繼承是指派生類繼承基類的數(shù)據(jù)成員和成員函數(shù). 繼承用來表示類屬關(guān)系, 不能將繼承理解為構(gòu)成關(guān)系

繼承派生的作用

(1)增加新的成員(數(shù)據(jù)成員和成員函數(shù))

(2)重新定義已有的成員函數(shù)

(3)改變基類成員的訪問權(quán)限

單一繼承

一般形式:class 派生類名: 訪問控制 基類名 { private: 成員聲明列表 protected: 成員聲明列表 public: 成員聲明列表}

"冒號"表示新類是哪個基類的派生類

"訪問控制"指繼承方式. 三個方式: public, protected, private

派生類的構(gòu)造函數(shù)和析構(gòu)函數(shù)


類的保護成員

如果希望Rect中的showRect()函數(shù)可以一次顯示x, y , w, h. 我們直接修改showRect()函數(shù)是不行的。


報錯 error: 'x' is a private member of ‘Point' 'y' is a private member of ‘Point', x, y為Point類的私有成員, 公有派生時, 在Rect類中是不可訪問的

我們還需要將基類Point中的兩個成員聲明為protected的屬性

像這樣:


訪問權(quán)限和賦值兼容規(guī)則

在根類中, 對于成員的訪問級別有三種, public, protected, private

在派生類中, 對于成員的訪問級別有四種, public(公有), protected(受保護), private(私有), inaccessible(不可訪問)

(1)公有派生和賦值兼容規(guī)則

在公有派生情況下, 基類成員的訪問權(quán)限在派生類中基本保持不變

1.基類的公有成員在派生類中仍然是公有的

2.基類的保護成員在派生類中仍然是受保護的

3.基類的不可訪問的成員在派生類中仍然是不可訪問的

4.基類的私有成員在派生類中變成了不可訪問的

總結(jié): 在公有派生的情況下, 通過派生類自己的成員函數(shù)可以訪問繼承過來的公有和保護成員, 但是不能訪問繼承來的私有成員, 因為繼承過程的私有成員, 變成了第四個級別, 不可訪問的.

賦值兼容規(guī)則:在公有派生的情況下, 一個派生類的對象可以作為基類的對象來使用的情況.?

像這樣:


(2)“isa”和”has-a“的區(qū)別

繼承和派生 isa

比如一個Person類, 派生出一個Student類, 我們可以說Student就是Person, 也就是 Student isa Person, 而反過來則不行.

一個類用另一個類的對象作為自己的數(shù)據(jù)成員或者成員函數(shù)的參數(shù) has-a

像這樣:


表示一個Worker對象有一個名字, 一個地址, 一個電話號碼, has-a的關(guān)系, 包含的關(guān)系

(3)私有派生

通過私有派生, 基類的私有和不可訪問成員在派生類中是不可訪問的, 而公有和保護成員這里就成了派生類的私有成員


因為私有派生不利于進一步派生, 因而實際中私有派生用得并不多

(4)保護派生

保護派生使原來的權(quán)限都降一級使用, 即private變?yōu)椴豢稍L問, protected變?yōu)閜rivate, public變?yōu)閜rotected. 限制了數(shù)據(jù)成員和成員函數(shù)的訪問權(quán)限, 因此在實際中保護派生用得也不多.

比如: 我們在上個例子中, Rect類保護派生于Point, 則在Test類中Point::show();就可以使用啦!


多重繼承

一個類從多個基類派生

格式:

class 派生類名: 訪問控制 基類名1, 訪問控制 基類名2, … {

定義派生類自己的成員

}

像這樣:


二義性及其支配規(guī)則

對基類成員的訪問必須是無二義性的, 如果一個表達式的含義可以解釋為可以訪問多個基類中的成員, 則這種對基類成員的訪問就是不確定的, 稱這種訪問具有二義性

作用域分辨符和成員名限定


格式:類名::標識符

:: 為作用域分辨符, "類名"可以是任一基類或派生類名, “標識符”是該類中聲明的任一成員名

派生類支配基類的同名函數(shù)

如果派生類定義了一個同基類成員函數(shù)同名的新成員函數(shù)(具有相同參數(shù)表的成員函數(shù)), 派生類的新成員函數(shù)就覆蓋了基類的同名成員函數(shù).

在這里, 直接使用成員名只能訪問派生類中的成員函數(shù), 使用作用域運算符, 才能訪問基類的同名成員函數(shù).

派生類中的成員函數(shù)名支配基類中的同名的成員函數(shù)名, 這稱為名字支配規(guī)則.

如果一個名字支配另一個名字, 則二者之間不存在二義性, 當選擇該名字時, 使用支配者的名字.

例如上個例子中


來自一張表的總結(jié)

總結(jié)

C++中的多重繼承可能更靈活, 并且支持三種派生方式, 我們在學(xué)習(xí)一門語言的時候, 更應(yīng)該把精力放在它的特性上面, 不應(yīng)該用什么語言, 都用自己所擅長語言的思考方式, 實現(xiàn)方式等, 要學(xué)會發(fā)揮該語言的優(yōu)勢所在。

自學(xué)C/C++編程難度很大,不妨和一些志同道合的小伙伴一起學(xué)習(xí)成長!

學(xué)習(xí)C/C++編程知識,提升C/C++編程能力,歡迎關(guān)注UP一起來成長!

另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~

C/C++編程筆記:C++入門知識丨繼承和派生的評論 (共 條)

分享到微博請遵守國家法律
东明县| 缙云县| 西林县| 大冶市| 鹤山市| 咸丰县| 仁化县| 灌南县| 张家港市| 桦川县| 五常市| 饶河县| 白城市| 宣恩县| 泽州县| 延吉市| 贵溪市| 涟水县| 珠海市| 鄯善县| 安徽省| 剑阁县| 临湘市| 黎川县| 高平市| 鄂温| 绥宁县| 祥云县| 彭泽县| 那曲县| 房产| 潮安县| 绵阳市| 敖汉旗| 临高县| 桦南县| 封开县| 建始县| 双城市| 凤翔县| 静海县|