大學(xué)虛擬函數(shù)題目及答案_第1頁
大學(xué)虛擬函數(shù)題目及答案_第2頁
大學(xué)虛擬函數(shù)題目及答案_第3頁
大學(xué)虛擬函數(shù)題目及答案_第4頁
大學(xué)虛擬函數(shù)題目及答案_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

VIP免費下載

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

文檔簡介

大學(xué)虛擬函數(shù)題目及答案一、單項選擇題1.在C++中,以下哪個關(guān)鍵字用于聲明虛擬函數(shù)?A.staticB.virtualC.inlineD.abstract答案:B2.虛擬函數(shù)的主要作用是什么?A.用于實現(xiàn)多態(tài)B.用于實現(xiàn)繼承C.用于實現(xiàn)封裝D.用于實現(xiàn)重載答案:A3.在C++中,以下哪個函數(shù)不能被聲明為虛擬函數(shù)?A.構(gòu)造函數(shù)B.析構(gòu)函數(shù)C.私有成員函數(shù)D.公共成員函數(shù)答案:C4.以下哪個選項是正確實現(xiàn)多態(tài)的方式?A.通過函數(shù)重載B.通過函數(shù)覆蓋C.通過函數(shù)重定義D.通過函數(shù)隱藏答案:B5.在C++中,以下哪個關(guān)鍵字用于聲明純虛函數(shù)?A.abstractB.virtualC.pureD.interface答案:C二、填空題1.在C++中,聲明虛擬函數(shù)的關(guān)鍵字是________。答案:virtual2.多態(tài)性允許我們使用基類指針或引用來調(diào)用________。答案:派生類中的函數(shù)3.純虛函數(shù)的聲明方式是在虛擬函數(shù)聲明的末尾加上________。答案:=04.析構(gòu)函數(shù)可以被聲明為________函數(shù),以確保派生類對象的正確析構(gòu)。答案:虛擬5.在C++中,使用________關(guān)鍵字可以覆蓋基類中的虛擬函數(shù)。答案:override三、簡答題1.描述C++中虛擬函數(shù)的工作原理。答案:在C++中,虛擬函數(shù)允許我們在基類中聲明一個函數(shù),然后在派生類中重寫該函數(shù)。當(dāng)通過基類的指針或引用調(diào)用該函數(shù)時,會根據(jù)對象的實際類型(派生類類型)來決定調(diào)用哪個版本的函數(shù),這就是多態(tài)的實現(xiàn)方式。虛擬函數(shù)的工作原理依賴于虛函數(shù)表(vtable),每個包含虛擬函數(shù)的類都有一個虛函數(shù)表,表中存儲了指向類中每個虛擬函數(shù)的指針。當(dāng)創(chuàng)建對象時,對象的內(nèi)存布局中會包含一個指向該類虛函數(shù)表的指針。當(dāng)調(diào)用虛擬函數(shù)時,編譯器會使用這個指針來查找正確的函數(shù)地址并調(diào)用。2.解釋為什么構(gòu)造函數(shù)不能被聲明為虛擬函數(shù)。答案:構(gòu)造函數(shù)的主要目的是初始化對象,它在對象創(chuàng)建時被調(diào)用。由于構(gòu)造函數(shù)在對象創(chuàng)建時就被調(diào)用,此時對象的類型尚未完全確定,因此無法確定應(yīng)該調(diào)用哪個派生類的構(gòu)造函數(shù)。此外,構(gòu)造函數(shù)不參與對象的析構(gòu)過程,因此不需要像析構(gòu)函數(shù)那樣提供多態(tài)性。因此,構(gòu)造函數(shù)不能被聲明為虛擬函數(shù)。四、編程題1.編寫一個C++程序,包含一個基類Shape和一個派生類Circle,其中Shape類包含一個虛擬函數(shù)area()用于計算面積,Circle類重寫該函數(shù)以計算圓的面積。```cppinclude<iostream>include<cmath>classShape{public:virtualdoublearea(){return0;}virtual~Shape(){}};classCircle:publicShape{private:doubleradius;public:Circle(doubler):radius(r){}doublearea()override{returnM_PIradiusradius;}};intmain(){Shapeshape1=newCircle(5.0);std::cout<<"AreaofCircle:"<<shape1->area()<<std::endl;deleteshape1;return0;}```2.編寫一個C++程序,包含一個基類Animal和一個派生類Dog,其中Animal類包含一個虛擬函數(shù)speak()用于模擬動物的叫聲,Dog類重寫該函數(shù)以模擬狗的叫聲。```cppinclude<iostream>classAnimal{public:virtualvoidspeak(){std::cout<<"Animalsound"<<std::endl;}virtual~Animal(){}};classDog:publicAnimal{public:voidspeak()override{std::cout<<"Woof!Woof!"<<std::endl;}};intmain(){Animalanimal=newDog();

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論