国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

當(dāng)前位置:首頁(yè) > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 學(xué)習(xí)筆記 > c多態(tài)的作用,讓你快速學(xué)會(huì)c多態(tài)

c多態(tài)的作用,讓你快速學(xué)會(huì)c多態(tài) 時(shí)間:2018-08-29      來(lái)源:未知

作用:

什么是多態(tài):調(diào)用同一個(gè)函數(shù)(接口)表現(xiàn)出不同的結(jié)果

多態(tài)按字面的意思就是多種形態(tài)。當(dāng)類(lèi)之間存在層次結(jié)構(gòu),并且類(lèi)之間是通過(guò)繼承關(guān)聯(lián)時(shí),就會(huì)用到多態(tài)。

C++ 多態(tài)意味著調(diào)用成員函數(shù)時(shí),會(huì)根據(jù)調(diào)用函數(shù)的對(duì)象的類(lèi)型來(lái)執(zhí)行不同的函數(shù)。

函數(shù)重寫(xiě)(函數(shù)覆蓋):

1. 函數(shù)名相同

2. 入?yún)⒁粯,返回值相?/p>

3. 作用域不一樣,一個(gè)位于基類(lèi),一個(gè)位于派生類(lèi)。

4. 基類(lèi)的函數(shù)必須加virutal,派生類(lèi)的同名函數(shù)可以加可不加。

5. 訪問(wèn)限定符可以不一樣

虛函數(shù):

虛函數(shù) 是在基類(lèi)中使用關(guān)鍵字 virtual 聲明的函數(shù)。在派生類(lèi)中重新定義基類(lèi)中定義的虛函數(shù)時(shí),會(huì)告訴編譯器不要靜態(tài)鏈接到該函數(shù)。

我們想要的是在程序中任意點(diǎn)可以根據(jù)所調(diào)用的對(duì)象類(lèi)型來(lái)選擇調(diào)用的函數(shù),這種操作被稱(chēng)為動(dòng)態(tài)鏈接,或后期綁定。

純虛函數(shù):

您可能想要在基類(lèi)中定義虛函數(shù),以便在派生類(lèi)中重新定義該函數(shù)更好地適用于對(duì)象,但是您在基類(lèi)中又不能對(duì)虛函數(shù)給出有意義的實(shí)現(xiàn),這個(gè)時(shí)候就會(huì)用到純虛函數(shù)。

怎么樣實(shí)現(xiàn)多態(tài)?

1. 派生類(lèi)重寫(xiě)基類(lèi)的虛函數(shù)

2. 通過(guò)基類(lèi)的指針指向派生類(lèi)對(duì)象,通過(guò)基類(lèi)指針調(diào)用虛函數(shù),可以保證接口高度統(tǒng)一

賦值兼容規(guī)則

基類(lèi)的指針可以指向派生類(lèi)對(duì)象,而派生類(lèi)指針不能指向基類(lèi)的對(duì)

純虛函數(shù):虛函數(shù) =0;

包含純虛函數(shù)的類(lèi)叫抽象類(lèi),抽象類(lèi)無(wú)法創(chuàng)建對(duì)象。函數(shù)重載、函數(shù)重寫(xiě)(覆蓋)、函數(shù)隱藏的區(qū)別?

1、成員函數(shù)覆蓋(override,也稱(chēng)重寫(xiě))

是指派生類(lèi)重新定義基類(lèi)的虛函數(shù),特征如下:

A、不同的作用域(分別位于派生類(lèi)與基類(lèi))

B、函數(shù)名字相同

C、參數(shù)相同

D、基類(lèi)函數(shù)必須有virtual關(guān)鍵字,不能有static

E、返回值相同

F、重寫(xiě)函數(shù)的權(quán)限訪問(wèn)限定符可以不同

2、函數(shù)重載(overload)

是指函數(shù)名相同,參數(shù)不同(數(shù)量、類(lèi)型、次序),特征如下:

A、相同的范圍(在同一個(gè)作用域中)

B、函數(shù)名字相同

C、參數(shù)不同

D、virtual 關(guān)鍵字可有可無(wú)

E、返回值可以不同靜態(tài)聯(lián)編(靜態(tài)鏈接)

是指在編譯階段就將函數(shù)實(shí)現(xiàn)和函數(shù)調(diào)用關(guān)聯(lián)起來(lái),因此靜態(tài)聯(lián)編也叫早綁定,函數(shù)重載是早綁定

動(dòng)態(tài)聯(lián)編(動(dòng)態(tài)鏈接)

是指在程序執(zhí)行的時(shí)候才將函數(shù)實(shí)現(xiàn)和函數(shù)調(diào)用關(guān)聯(lián),因此也叫運(yùn)行時(shí)綁定或者晚綁定。

C++中一般情況下聯(lián)編也是靜態(tài)聯(lián)編,但是一旦涉及到多態(tài)和虛擬函數(shù)就必須要使用動(dòng)態(tài)聯(lián)編了

3、成員函數(shù)隱藏(也稱(chēng)重定義,盡量不去寫(xiě))

A、不在同一個(gè)作用域(分別位于派生類(lèi)與基類(lèi))

B、函數(shù)名字相同

C、返回值可以不同

D、參數(shù)不同。此時(shí),不論有無(wú) virtual 關(guān)鍵字,基類(lèi)的函數(shù)將被隱藏(注意與重載的區(qū)別)

E、參數(shù)相同,但是基類(lèi)函數(shù)沒(méi)有 virtual關(guān)鍵字。此時(shí),基類(lèi)的函數(shù)被隱藏(注意與覆蓋的區(qū)別)

多態(tài)的原理:虛函數(shù)表

通過(guò)基類(lèi)的指針或引用調(diào)用虛函數(shù),到底調(diào)用是基類(lèi)的虛函數(shù)還是派生類(lèi)重寫(xiě)后的虛函數(shù),

看的是對(duì)象,而不是指針的數(shù)據(jù)類(lèi)型。

原因:虛函數(shù)的調(diào)用會(huì)查虛函數(shù)表,每個(gè)對(duì)象的虛函數(shù)表不一樣,調(diào)用的虛函數(shù)就不一樣。

虛析構(gòu)

析構(gòu)函數(shù)前為什么加virtual關(guān)鍵字?

只有虛函數(shù)的調(diào)用,是看對(duì)象不同查對(duì)象的虛函數(shù)表,其他看指針或引用的數(shù)據(jù)類(lèi)型。

如果不在析構(gòu)函數(shù)前加virtual ,在某些情況下會(huì)產(chǎn)生內(nèi)存泄漏。推薦在析構(gòu)函數(shù)前加virtual

構(gòu)造函數(shù)前為什么加explicit關(guān)鍵字?

給單參數(shù)的構(gòu)造函數(shù)前使用explicit關(guān)鍵字,阻止可能產(chǎn)生的隱式轉(zhuǎn)換:由成員變量類(lèi)型轉(zhuǎn)換為類(lèi)類(lèi)型。

上一篇:linux shell命令大全(都是隨堂筆記)

下一篇:linux系統(tǒng)移植的詳細(xì)步驟

熱點(diǎn)文章推薦
華清學(xué)員就業(yè)榜單
高薪學(xué)員經(jīng)驗(yàn)分享
熱點(diǎn)新聞推薦
前臺(tái)專(zhuān)線:010-82525158 企業(yè)培訓(xùn)洽談專(zhuān)線:010-82525379 院校合作洽談專(zhuān)線:010-82525379 Copyright © 2004-2022 北京華清遠(yuǎn)見(jiàn)科技集團(tuán)有限公司 版權(quán)所有 ,京ICP備16055225號(hào)-5,京公海網(wǎng)安備11010802025203號(hào)

回到頂部