版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、隱藏、覆蓋重載問(wèn)題解析 隱藏、覆蓋重載問(wèn)題解析 成員函數(shù)的重載(overload)、 覆蓋(override)與隱藏很容易混淆, C++程序員必須要搞清楚概念,否則錯(cuò)誤將防不勝防。 1、重載與覆蓋 重載與覆蓋 1.1 成員函數(shù)被重載的特征: 成員函數(shù)被重載的特征: (1)相同的范圍,在相同的作用域中,具體到類中指的就是在同一個(gè)類中; (2)函數(shù)名字相同; (3)參數(shù)不同; (4)virtual 關(guān)鍵字可有可無(wú); 1.2 成員函數(shù) 成員函
2、數(shù)覆蓋特征 覆蓋特征 (1)不同的范圍(分別位于派生類與基類) (2)函數(shù)名字相同; (3)參數(shù)相同; (4)基類函數(shù)必須有 virtual 關(guān)鍵字。 在下面 example 1 當(dāng)中 , 函數(shù) Base::f(int) 與 Base::f(float) 相互重載, 而 Base::g(void) 被 Derived::g(void)覆蓋, 也就是說(shuō)當(dāng)調(diào)用基類函數(shù) g(void)的時(shí)候,自動(dòng)的轉(zhuǎn)化為派生類當(dāng)中的 g(void)類型。
3、#include class Base { public: void f(int x) { cout f(42); // Base::f(int) 42 void main(void) { Derived d; Base *pb = Derived *pd = // Good : behavior depends solely on type of the object pb->f(3.14f); // Derived:
4、:f(float) 3.14 pd->f(3.14f); // Derived::f(float) 3.14 // Bad : behavior depends on type of the pointer pb->g(3.14f); // Base::g(float) 3.14 pd->g(3.14f); // Derived::g(int) 3 (surprise!) // Bad : behavior depen
5、ds on type of the pointer pb->h(3.14f); // Base::h(float) 3.14 (surprise!) pd->h(3.14f); // Derived::h(float) 3.14 } 示例 2(b) 重載、覆蓋和隱藏的比較 3 擺脫隱藏 擺脫隱藏 隱藏規(guī)則引起了不少麻煩。示例 3 程序中,語(yǔ)句 pd->f(10)的本意是想調(diào)用函數(shù)Base::f(int),但是 Base
6、::f(int)不幸被 Derived::f(char *)隱藏了。由于數(shù)字 10 不能被隱式地轉(zhuǎn)化為字符串,所以在編譯時(shí)出錯(cuò)。 class Base { public: void f(int x); }; class Derived : public Base ...{ public: void f(char *str); }; void Test(void) ...{ Derived *pd = new Derived; pd-&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c++成員函數(shù)重載,覆蓋與隱藏
- iphone 7 plus
- iphone 7 plus
- iphone 7 plus
- plus.gif
- abb s4cplus培訓(xùn)教程
- iphone 7 plus
- iphone 6 plus
- iphone 6 plus
- 法語(yǔ)plus的發(fā)音
- 音頻中的信息隱藏和隱藏分析技術(shù)研究.pdf
- 隱藏在輪胎中的學(xué)問(wèn)
- intecont plus申克
- tree_plus.gif
- pbstudio_plus介紹
- flash_plus6.zip
- flash_plus6.zip
- 信息隱藏中的數(shù)字指紋研究.pdf
- 靜態(tài)圖像中數(shù)據(jù)隱藏的研究.pdf
- 視頻傳輸中的錯(cuò)誤隱藏.pdf
評(píng)論
0/150
提交評(píng)論