首頁考試吧論壇Exam8視線考試商城網(wǎng)絡(luò)課程模擬考試考友錄實(shí)用文檔求職招聘論文下載
2014中考
法律碩士
2014高考
MBA考試
2014考研
MPA考試
在職研
中科院
考研培訓(xùn) 自學(xué)考試 成人高考
四 六 級
GRE考試
攻碩英語
零起點(diǎn)日語
職稱英語
口譯筆譯
申碩英語
零起點(diǎn)韓語
商務(wù)英語
日語等級
GMAT考試
公共英語
職稱日語
新概念英語
專四專八
博思考試
零起點(diǎn)英語
托福考試
托業(yè)考試
零起點(diǎn)法語
雅思考試
成人英語三級
零起點(diǎn)德語
等級考試
華為認(rèn)證
水平考試
Java認(rèn)證
職稱計(jì)算機(jī) 微軟認(rèn)證 思科認(rèn)證 Oracle認(rèn)證 Linux認(rèn)證
公 務(wù) 員
導(dǎo)游考試
物 流 師
出版資格
單 證 員
報(bào) 關(guān) 員
外 銷 員
價格鑒證
網(wǎng)絡(luò)編輯
駕 駛 員
報(bào)檢員
法律顧問
管理咨詢
企業(yè)培訓(xùn)
社會工作者
銀行從業(yè)
教師資格
營養(yǎng)師
保險(xiǎn)從業(yè)
普 通 話
證券從業(yè)
跟 單 員
秘書資格
電子商務(wù)
期貨考試
國際商務(wù)
心理咨詢
營 銷 師
司法考試
國際貨運(yùn)代理人
人力資源管理師
廣告師職業(yè)水平
衛(wèi)生資格 執(zhí)業(yè)醫(yī)師 執(zhí)業(yè)藥師 執(zhí)業(yè)護(hù)士
會計(jì)從業(yè)資格
基金從業(yè)資格
統(tǒng)計(jì)從業(yè)資格
經(jīng)濟(jì)師
精算師
統(tǒng)計(jì)師
會計(jì)職稱
法律顧問
ACCA考試
注冊會計(jì)師
資產(chǎn)評估師
審計(jì)師考試
高級會計(jì)師
注冊稅務(wù)師
國際內(nèi)審師
理財(cái)規(guī)劃師
美國注冊會計(jì)師
一級建造師
安全工程師
設(shè)備監(jiān)理師
公路監(jiān)理師
公路造價師
二級建造師
招標(biāo)師考試
物業(yè)管理師
電氣工程師
建筑師考試
造價工程師
注冊測繪師
質(zhì)量工程師
巖土工程師
造價員考試
注冊計(jì)量師
環(huán)保工程師
化工工程師
咨詢工程師
結(jié)構(gòu)工程師
城市規(guī)劃師
材料員考試
監(jiān)理工程師
房地產(chǎn)估價
土地估價師
安全評價師
房地產(chǎn)經(jīng)紀(jì)人
投資項(xiàng)目管理師
環(huán)境影響評價師
土地登記代理人
繽紛校園 實(shí)用文檔 英語學(xué)習(xí) 作文大全 求職招聘 論文下載 訪談|游戲
計(jì)算機(jī)等級考試

2014年計(jì)算機(jī)二級C++考點(diǎn)歸納:繼承與派生

  7.3 多繼承與虛基類

  1多繼承中的二義性問題

  在派生類中對基類成員的訪問應(yīng)該是唯一的。但是,在多繼承情況下,可能造成對基類中某個成員的訪問出現(xiàn)了不唯一的情況,這時就稱對基類成員的訪問產(chǎn)生了二義性。

  要解決這一問題,有兩種方法:

  (1)通過作用域運(yùn)算符(::)明確指出訪問的是基類Basel的fun()函數(shù),還是基類Base2的fun()函數(shù)。

  使用作用域運(yùn)算符進(jìn)行限定的一般格式是:

  <對象名>.<基類名>::<成員名>

  //數(shù)據(jù)成員

  <對象名>.<基類名>::<成員名>(參數(shù)表>)

  //成員函數(shù)

  (2)在類中定義同名成員

  對于在不同的作用域中聲明的標(biāo)識符的可見性原則是:如果存在兩個或多個具有包含關(guān)系的作用域,外層聲明的標(biāo)識符如果在內(nèi)層沒有聲明同名標(biāo)識符,那么它在內(nèi)層可見;如果內(nèi)層聲明了同名標(biāo)識符,則外層標(biāo)識符在內(nèi)層不可見,這時稱內(nèi)層變量覆蓋了外層同名變量。

  在類的繼承層次結(jié)構(gòu)中,基類的成員和派生類新增的成員都具有類作用域,二者的作用范圍不同,是相互包含的兩個層,派生類在內(nèi)層。這時,如果派生類定義了一個和某個基類成員同名的新成員(如果是成員函數(shù),則參數(shù)表也要相同,參數(shù)不同的情況屬于重載),派生的新成員就覆蓋了外層同名成員,直接使用成員名只能訪問到派生類的成員。

  2虛基類的定義

  當(dāng)一個派生類從多個基類派生,而這些基類又有一個共同的基類,當(dāng)對該基類中說明的成員進(jìn)行訪問時,可能出現(xiàn)二義性。虛基類就是為了解決這種二義性問題提出來的。

  在產(chǎn)生二義性問題的第二種情況中,產(chǎn)生二義性的最主要的原因是基類Base在派生類Derived2中產(chǎn)生了兩個基類子對象,從而導(dǎo)致了對基類Base的成員data訪問的不唯一性。要解決這個問題,只需使這個公共基類Base在派生類中只產(chǎn)生一個子對象即可。虛基類就可以完成這個任務(wù)。

  虛基類的說明格式如下:

  class<類名>:virtual<繼承方式><基類名>

  其中,關(guān)鍵字virtual與繼承方式的位置無關(guān),但必須位于虛基類名之前,且virtual只對緊隨其后的基類名起作用。

  3虛基類的構(gòu)造函數(shù)

  使用虛基類解決二義性問題的關(guān)鍵是在派生類中只產(chǎn)生一個虛基類子對象。為初始化基類子對象,派生類的構(gòu)造函數(shù)要調(diào)用基類的構(gòu)造函數(shù)。對于虛基類,由于派生類的對象中只有一個虛基類子對象,所以,在建立派生類的一個對象時,為保證虛基類子對象只被初始化一次,這個虛基類構(gòu)造函數(shù)必須只被調(diào)用一次。雖然繼承結(jié)構(gòu)的層次可能很深,但要建立的對象所屬的類只是這個繼承結(jié)構(gòu)中間的某個類,因此將在建立對象時所指定的類稱為最派生類。虛基類子對象由最派生類的構(gòu)造函數(shù)通過調(diào)用虛基類的構(gòu)造函數(shù)進(jìn)行初始化。所以,最派生類的構(gòu)造函數(shù)的成員初始化列表中必須列出對虛基類構(gòu)造函數(shù)的調(diào)用;如果未列出,則表示使用該虛基類的缺省構(gòu)造函數(shù)。

  由于最派生類總是相對的,因此,從虛基類直接或間接派生的派生類中的構(gòu)造函數(shù)的成員初始化列表中都要列出對虛基類構(gòu)造函數(shù)的調(diào)用。但只有用于建立對象的最派生類的構(gòu)造函數(shù)才調(diào)用虛基類的構(gòu)造函數(shù),此時最派生類的所有基類中列出的對虛基類的構(gòu)造函數(shù)的調(diào)用在執(zhí)行過程中都被忽略,從而保證對虛基類子對象只初始化一次。

  當(dāng)在一個成員初始化列表中同時出現(xiàn)對虛基類和非虛基類構(gòu)造函數(shù)的調(diào)用時,虛基類的構(gòu)造函數(shù)先于非虛基類的構(gòu)造函數(shù)執(zhí)行。

上一頁  1 2 3 4 5 下一頁

編輯推薦:

2014年上半年計(jì)算機(jī)等級考試報(bào)名時間預(yù)告

2014年計(jì)算機(jī)等級考試考試時間預(yù)測

2013年9月計(jì)算機(jī)等級考試成績查詢時間及方式預(yù)告

文章搜索
版權(quán)聲明:如果計(jì)算機(jī)等級考試網(wǎng)所轉(zhuǎn)載內(nèi)容不慎侵犯了您的權(quán)益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉(zhuǎn)載本計(jì)算機(jī)等級考試網(wǎng)內(nèi)容,請注明出處。