2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論