大連海事大學(xué) C++面向?qū)ο蟮某绦蛟O(shè)計(jì)胡英Chapter8_第1頁
大連海事大學(xué) C++面向?qū)ο蟮某绦蛟O(shè)計(jì)胡英Chapter8_第2頁
大連海事大學(xué) C++面向?qū)ο蟮某绦蛟O(shè)計(jì)胡英Chapter8_第3頁
大連海事大學(xué) C++面向?qū)ο蟮某绦蛟O(shè)計(jì)胡英Chapter8_第4頁
大連海事大學(xué) C++面向?qū)ο蟮某绦蛟O(shè)計(jì)胡英Chapter8_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 Teacher類的屬性包括:編號(hào)姓名級(jí)別月工資教工總數(shù)(靜態(tài)變量)Teacher類的成員函數(shù)包括:構(gòu)造函數(shù)析構(gòu)函數(shù)(應(yīng)為虛函數(shù))設(shè)置級(jí)別計(jì)算工資(應(yīng)為虛函數(shù))顯示教工基本信息(應(yīng)為虛函數(shù)) 從Teacher類可以派生教學(xué)人員類(NorProf)和研究人員類(ResProf):NorProf類從Teacher類派生類,其屬性還包括:每月授課課時(shí)數(shù) 每課時(shí)補(bǔ)助NorProf類的成員函數(shù)包括:構(gòu)造函數(shù)設(shè)置級(jí)別計(jì)算工資(工資包括基本工資+課時(shí)補(bǔ)助)顯示教工基本信息ResProf類從Teacher類派生,其屬性還包括: 每月承擔(dān)的科研經(jīng)費(fèi)總數(shù)提成比例ResProf類的成員函數(shù)包括:構(gòu)造函數(shù)設(shè)置級(jí)別計(jì)算

2、工資(工資包括基本工資+科研經(jīng)費(fèi)提成)顯示教工基本信息特聘教授SpecProf類,該類從教學(xué)人員類NorProf和研究人員類ResProf派生SpecProf類的屬性還包括:每月固定津貼SpecProf類的成員函數(shù)包括:構(gòu)造函數(shù)設(shè)置級(jí)別計(jì)算工資(基本工資+津貼+課時(shí)補(bǔ)助+科研提成)顯示教工基本信息 責(zé)任教授RespProf類,該類從教學(xué)人員類NorProf和研究人員類ResProf派生RespProf類的屬性還包括:每月固定津貼RespProf類的成員函數(shù)包括:構(gòu)造函數(shù)設(shè)置級(jí)別計(jì)算工資(基本工資+津貼+課時(shí)補(bǔ)助)顯示教工基本信息成員函數(shù)的重載、覆蓋與隱藏成員函數(shù)的重載、覆蓋與隱藏 成員函數(shù)的重

3、載、覆蓋(override)與隱藏很容易混淆,C+程序員必須要搞清楚概念,否則錯(cuò)誤將防不勝防。 成員函數(shù)被成員函數(shù)被重載重載的特征:的特征:(1 1)相同的范圍(在同一個(gè)類中);)相同的范圍(在同一個(gè)類中);(2 2)函數(shù)名字相同;)函數(shù)名字相同;(3 3)參數(shù)不同;)參數(shù)不同;(4 4)virtualvirtual關(guān)鍵字可有可無。關(guān)鍵字可有可無。 覆蓋覆蓋是指派生類函數(shù)覆蓋基類函數(shù),特征是:是指派生類函數(shù)覆蓋基類函數(shù),特征是:(1 1)不同的范圍(分別位于派生類與基類);)不同的范圍(分別位于派生類與基類);(2 2)函數(shù)名字相同;)函數(shù)名字相同;(3 3)參數(shù)相同;)參數(shù)相同;(4 4)基

4、類函數(shù)必須有)基類函數(shù)必須有virtualvirtual關(guān)鍵字。關(guān)鍵字。 隱藏隱藏是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:是指派生類的函數(shù)屏蔽了與其同名的基類函數(shù),規(guī)則如下:(1 1)如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有)如果派生類的函數(shù)與基類的函數(shù)同名,但是參數(shù)不同。此時(shí),不論有無無virtualvirtual關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。關(guān)鍵字,基類的函數(shù)將被隱藏(注意別與重載混淆)。(2 2)如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函)如果派生類的函數(shù)與基類的函數(shù)同名,并且參數(shù)也相同,但是基類函數(shù)沒有數(shù)沒有virtu

5、alvirtual關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆)。關(guān)鍵字。此時(shí),基類的函數(shù)被隱藏(注意別與覆蓋混淆)。 #include class Basepublic: virtualvoid f(float x) cout Base:f(float) x endl; void g(float x) cout Base:g(float) x endl; void h(float x) cout Base:h(float) x endl; ;class Derived : public Basepublic: virtualvoid f(float x) cout Derived:f(f

6、loat) x endl; void g(int x) cout Derived:g(int) x endl; void h(float x) cout Derived:h(float) x f(3.14f);pd-f(3.14f);pb-g(3.14f);pd-g(3.14f); pb-h(3.14f);pd-h(3.14f);結(jié)果: Derived:f(float) 3.14 Derived:f(float) 3.14 Base:g(float) 3.14 Derived:g(int) 3 Base:h(float) 3.14 Derived:h(float) 3.14class Base

7、public:void f(int x);class Derived : public Basepublic:void f(char *str);void Test(void)Derived *pd = new Derived;pd-f(10); / errorclass Derived1 : public Basepublic:void f(char *str);void f(int x) Base:f(x); ; void Test1(void)Derived1 *pd = new Derived1;pd-f(10); / ok隱藏規(guī)則至少有兩個(gè)存在的理由:1.寫語句pd-f(10)的人可能真的想調(diào)用Derived:f(char *)函數(shù),只是他誤將參數(shù)寫錯(cuò)了。有了隱藏規(guī)則,編譯器就可以明確指出錯(cuò)誤。否則,編譯器會(huì)靜悄悄地將錯(cuò)就錯(cuò),程序員將很難發(fā)現(xiàn)這個(gè)錯(cuò)誤,留下禍根。2.假如類Derived有多個(gè)基類(多重繼承),有時(shí)搞不清楚哪些基類定義了函數(shù)f。如果沒有隱藏規(guī)則,那么pd-f(10)可能會(huì)調(diào)用一個(gè)出乎意料的基類函數(shù)f。盡管隱藏規(guī)則看起來不怎么有道理,但它的確能消滅這些意外。小結(jié)虛函數(shù)是C+作為面向?qū)ο蟪绦蛟O(shè)計(jì)語言對(duì)多態(tài)從語法上提供的有力支

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論