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

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

C/C++編程筆記:C++入門知識丨多態(tài)性和虛函數(shù)

2020-07-29 21:18 作者:C語言編程__Plus  | 我要投稿

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


多態(tài)性

編譯時的多態(tài)性稱為靜態(tài)聯(lián)編. 當(dāng)調(diào)用重載函數(shù)時, 在編譯期就確定下來調(diào)用哪個函數(shù).

運(yùn)行時的多態(tài)性稱為動態(tài)聯(lián)編. 在運(yùn)行時才能確定調(diào)用哪個函數(shù), 由虛函數(shù)來支持.

靜態(tài)聯(lián)編中的賦值兼容性及名字支配規(guī)律

派生一個類的原因并非總是為了添加新的成員或成員函數(shù), 有時是為了重新定義基類的成員函數(shù)。


在派生類有同名函數(shù)的情況下

Point * pPoint; // 聲明的基類指針只能指向基類

Circle * pCircle // 聲明的派生類指針只能指向派生類

如果派生類沒有基類的同名函數(shù), 派生類的指針才根據(jù)繼承原則調(diào)用基類的函數(shù)

虛函數(shù)

一旦定義了虛函數(shù), 該基類的派生類中的同名函數(shù)也自動成為虛函數(shù).

虛函數(shù)的定義

用關(guān)鍵字virtual來聲明一個虛函數(shù), 虛函數(shù)只能是類中的一個成員函數(shù), 不能是靜態(tài)成員.

像這樣:


虛函數(shù)實現(xiàn)多態(tài)性的條件

關(guān)鍵字virtual告訴編譯器調(diào)用虛函數(shù)進(jìn)行動態(tài)聯(lián)編.

使用虛函數(shù)不一定產(chǎn)生多態(tài)性, 也不一定使用動態(tài)聯(lián)編.

在調(diào)用中對虛函數(shù)使用成員名限定, 可以強(qiáng)制編譯器對該函數(shù)使用靜態(tài)聯(lián)編.

產(chǎn)生運(yùn)行多態(tài)性, 也就是動態(tài)聯(lián)編有3個前提

(1)類之間的繼承關(guān)系滿足賦值兼容性規(guī)則

(2)改寫了同名虛函數(shù)

(3)根據(jù)賦值兼容性規(guī)則使用指針(或引用)

像這樣:


純虛函數(shù)與抽象類

在基類中不給虛函數(shù)一個有意義的定義, 可以說明為純虛函數(shù), 將定義留給派生類去做

像這樣:


抽象類:包含有純虛函數(shù)的類稱為抽象類. 一個抽象類至少有一個純虛函數(shù), 一個抽象類只能作為基類來派生新類, 不能說明抽象類的對象.


注意

空虛函數(shù)定義 virtual void area() {}

純虛函數(shù)定義 virtual void area()? = 0;

純虛函數(shù)的派生類仍是抽象類. 如果派生類中給出了基類所有純虛函數(shù)的實現(xiàn), 則該派生類不再是抽象類

類族

如果通過同一個基類派生一系列的類, 則將這些類總稱為類族.

像這樣:


多重繼承與虛函數(shù)

多重繼承可以被視為多個單一繼承的組合。

總結(jié)

C++有兩種多態(tài)性, 一種是編譯時多態(tài)性, 也叫靜態(tài)聯(lián)編; 另一種是運(yùn)行時多態(tài)性, 也叫動態(tài)聯(lián)編. 這大大提高了我們解決問題的豐富性. 可能也是C++長久不衰的魅力所在吧! 我會繼續(xù)深入學(xué)習(xí)C++, 繼續(xù)挖掘語言的本質(zhì)!

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

學(xué)習(xí)C/C++編程知識,提升C/C++編程能力,歡迎關(guān)注UP一起來成長!
另外,UP在主頁上傳了一些學(xué)習(xí)C/C++編程的視頻教程,有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會對你有幫助的~

C/C++編程筆記:C++入門知識丨多態(tài)性和虛函數(shù)的評論 (共 條)

分享到微博請遵守國家法律
屏东县| 师宗县| 宣恩县| 高雄市| 城固县| 扶绥县| 伊川县| 杭州市| 寻甸| 西贡区| 个旧市| 宁乡县| 东辽县| 耿马| 马山县| 扬州市| 奎屯市| 汝南县| 沽源县| 怀化市| 沁水县| 清镇市| 伊春市| 浏阳市| 蕲春县| 惠东县| 汪清县| 宿迁市| 富阳市| 周至县| 贵州省| 郎溪县| 梁河县| 水城县| 怀远县| 晋中市| 汝南县| 南汇区| 平泉县| 咸丰县| 周至县|