瀏覽量:30次
C++ 中函數(shù)重載、覆蓋與隱藏詳解
在C++語(yǔ)言中,函數(shù)扮演著很重要的角色,不管面向過(guò)程設(shè)計(jì),還是基于對(duì)象設(shè)計(jì);不管是面向?qū)ο缶幊?,還是基于泛型編程,函數(shù)都可以隨處而見(jiàn)。在談?wù)揅++中的函數(shù)重載、覆蓋和隱藏之前,先回顧下函數(shù)的基礎(chǔ)知識(shí)。
函數(shù)的聲明包括函數(shù)的返回值類(lèi)型,函數(shù)名稱(chēng),參數(shù)列表(參數(shù)的類(lèi)型、參數(shù)的個(gè)數(shù)、參數(shù)的順序)。例如,聲明一個(gè)兩個(gè)整數(shù)之和的函數(shù),int iAdd(int iNum1,int iNum2);而函數(shù)的定義可以理解為對(duì)函數(shù)功能的詳盡而準(zhǔn)確的解說(shuō),通俗點(diǎn),就是實(shí)現(xiàn)函數(shù)“how to do?”的效能。兩個(gè)整數(shù)之和函數(shù)的定義如下:
int iAdd(int iNum1,int iNum2) { return (iNum1+iNum2); }仔細(xì)觀(guān)察函數(shù)的聲明和定義,我們不難發(fā)現(xiàn),函數(shù)的定義就是除掉函數(shù)聲明后面的分號(hào),換之成大括號(hào),在大括號(hào)里面實(shí)現(xiàn)函數(shù)的功能。雖然在某些情況下,可以容許不對(duì)函數(shù)進(jìn)行聲明,只需要對(duì)函數(shù)定義,就能調(diào)用函數(shù)了。但是,強(qiáng)烈建議養(yǎng)成先聲明函數(shù),然后再定義函數(shù),最后在調(diào)用函數(shù)的良好習(xí)慣。關(guān)于函數(shù)的基礎(chǔ)知識(shí),暫時(shí)論述到這。
現(xiàn)在,進(jìn)入本文的主題。函數(shù)重載(function overload),它是在同一可訪(fǎng)問(wèn)區(qū)域內(nèi)部聲明具有幾個(gè)不同參數(shù)列(參數(shù)的類(lèi)型、參數(shù)的個(gè)數(shù),參數(shù)的順序)的相同函數(shù)名稱(chēng)的一種機(jī)制,函數(shù)的調(diào)用是根據(jù)不同的參數(shù)類(lèi)型和最佳匹配原則確定最終使用那個(gè)函數(shù)。函數(shù)覆蓋(function override)是在派生類(lèi)中完全一致性地聲明了父類(lèi)中的函數(shù),區(qū)別在于函數(shù)定義中的大括號(hào)之間的內(nèi)容可以不同,并且該函數(shù)在父類(lèi)中有關(guān)鍵字virtual標(biāo)識(shí);函數(shù)隱藏(function hide)是指在派生類(lèi)中函數(shù)與父類(lèi)函數(shù)完全一致,但是在父類(lèi)中該函數(shù)沒(méi)有關(guān)鍵字virtual標(biāo)識(shí),或者是指在派生類(lèi)中函數(shù)與父類(lèi)的函數(shù)名相同,參數(shù)列表不一樣,父類(lèi)中的該函數(shù)可有也可無(wú)關(guān)鍵字virtual標(biāo)識(shí)。
函數(shù)重載的特征:相同的范圍內(nèi)(在同一個(gè)類(lèi)中),函數(shù)的名稱(chēng)相同,參數(shù)列表不同,virtual關(guān)鍵字可有可無(wú);函數(shù)覆蓋的特征:在不同的范圍內(nèi)(父類(lèi)與派生類(lèi)),函數(shù)的名字相同,參數(shù)列表相同,父類(lèi)函數(shù)必須有關(guān)鍵字virtual;函數(shù)隱藏的特征:在不同范圍內(nèi)(父類(lèi)與派生類(lèi)),函數(shù)的名字相同,參數(shù)列表相同,但是父類(lèi)函數(shù)沒(méi)有關(guān)鍵字virtual或者,參數(shù)列表不相同,父類(lèi)函數(shù)中virtual關(guān)鍵字可有可無(wú)。
為了直觀(guān)地理解,請(qǐng)看下面的代碼。
#include通過(guò)上述代碼和運(yùn)行的結(jié)果,簡(jiǎn)明地知道了函數(shù)重載,覆蓋和隱藏。恰當(dāng)里利用這些特性,可以編寫(xiě)出更加有效、清晰和精簡(jiǎn)的代碼。
上一篇: Linux中禁止root用戶(hù)SSH登錄及修改SSH端口的方法,linux禁止root直接登錄
下一篇: U盤(pán)連接電腦沒(méi)反應(yīng)的解決方法,為什么u盤(pán)連接電腦沒(méi)反應(yīng)怎么辦
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類(lèi)稿件不代表本網(wǎng)觀(guān)點(diǎn),本網(wǎng)不承擔(dān)此類(lèi)稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請(qǐng)您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們?cè)诖_認(rèn)后,會(huì)立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776