欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

劍指XX游戲(四)-輕松搞定面試中的“虛”-創(chuàng)新互聯(lián)

提要

    今天要整理的知識點是C++中有關(guān)虛的一切。

站在用戶的角度思考問題,與客戶深入溝通,找到湞江網(wǎng)站設計與湞江網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站設計、網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、空間域名、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋湞江地區(qū)。

    包括:虛函數(shù),純虛函數(shù),虛基類,虛繼承...


1.什么是虛函數(shù),有什么作用?

在基類用virtual聲明成員函數(shù)為虛函數(shù)。這樣就可以在派生類中重新定義此函數(shù),為它賦予新的功能,并能方便地被調(diào)用。在類外定義虛函數(shù)時,不必再加virtual。該函數(shù)就是虛函數(shù)了。虛函數(shù)是多態(tài)性的基礎(chǔ),其調(diào)用的方式是動態(tài)聯(lián)編(程序運行時才決定調(diào)用基類的還是子類)。虛函數(shù)的作用是允許在派生類中重新定義與基類同名的函數(shù),并且可以通過基類指針或引用來訪問基類和派生類中的同名函數(shù),達到多態(tài)的目的。

2.什么是純虛函數(shù),什么是純虛類,有什么作用?

純虛函數(shù)只有函數(shù)的名字而不具備函數(shù)的功能,不能被調(diào)用。它只是通知編譯系統(tǒng):“在這里聲明一個虛函數(shù),留待派生類中定義”。在派生類中對此函數(shù)提供定義后,它才能具備函數(shù)的功能,可被調(diào)用。聲明純虛函數(shù)的一般形式是
              virtual 函數(shù)類型 函數(shù)名 (參數(shù)表列)=0;

純虛類也稱抽象類,凡是包含純虛函數(shù)的類都是抽象類。因為純虛函數(shù)是不能被調(diào)用的,包含純虛函數(shù)的類是無法建立對象的。

抽象類的作用是作為一個類族的共同基類,或者說,為一個類族提供一個公共接口。

3.為什么有的類的析構(gòu)函數(shù)需要設為virtual?是否每個類的析構(gòu)函數(shù)都要設置成virtual?是否可以將析構(gòu)函數(shù)設置成內(nèi)聯(lián)函數(shù)。

這樣做是為了當用一個基類的指針刪除一個派生類的對象時,派生類的析構(gòu)函數(shù)會被調(diào)用。
當然,并不是要把所有類的析構(gòu)函數(shù)都寫成虛函數(shù)。因為當類里面有虛函數(shù)的時候,編譯器會給類添加一個虛函數(shù)表,里面來存放虛函數(shù)指針,這樣就會增加類的存儲空間。所以,只有當一個類被用來作為基類的時候,才把析構(gòu)函數(shù)寫成虛函數(shù)。

可以。

4.析構(gòu)函數(shù)是否可以是純虛函數(shù)?

可以,當需要定義一個抽象類,如果其中沒有其他合適的函數(shù),可以把析構(gòu)函數(shù)定義為純虛的。

5.是否可以將構(gòu)造函數(shù)聲明為virtual?

虛函數(shù)的意思就是開啟動態(tài)綁定,程序會根據(jù)對象的動態(tài)類型來選擇要調(diào)用的方法。然而在構(gòu)造函數(shù)運行的時候,這個對象的動態(tài)類型還不完整,沒有辦法確定它到底是什么類型,故構(gòu)造函數(shù)不能動態(tài)綁定。(動態(tài)綁定是根據(jù)對象的動態(tài)類型而不是函數(shù)名,在調(diào)用構(gòu)造函數(shù)之前,這個對象根本就不存在,它怎么動態(tài)綁定?)


6.是否可以在析構(gòu)函數(shù)或者構(gòu)造函數(shù)中調(diào)用虛函數(shù)?

在構(gòu)造函數(shù)不要調(diào)用虛函數(shù)。在基類構(gòu)造的時候,虛函數(shù)是非虛,不會走到派生類中,既是采用的靜態(tài)綁定。顯然的是:當我們構(gòu)造一個子類的對象時,先調(diào)用基類的構(gòu)造函數(shù),構(gòu)造子類中基類部分,子類還沒有構(gòu)造,還沒有初始化,如果在基類的構(gòu)造中調(diào)用虛函數(shù),如果可以的話就是調(diào)用一個還沒有被初始化的對象,那是很危險的,所以C++中是不可以在構(gòu)造父類對象部分的時候調(diào)用子類的虛函數(shù)實現(xiàn)。但是不是說你不可以那么寫程序,你這么寫,編譯器也不會報錯。只是你如果這么寫的話編譯器不會給你調(diào)用子類的實現(xiàn),而是還是調(diào)用基類的實現(xiàn)。

 在析構(gòu)函數(shù)中也不要調(diào)用虛函數(shù)。在析構(gòu)的時候會首先調(diào)用子類的析構(gòu)函數(shù),析構(gòu)掉對象中的子類部分,然后在調(diào)用基類的析構(gòu)函數(shù)析構(gòu)基類部分,如果在基類的析構(gòu)函數(shù)里面調(diào)用虛函數(shù),會導致其調(diào)用已經(jīng)析構(gòu)了的子類對象里面的函數(shù),這是非常危險的。

7.什么叫虛繼承?有什么作用?

虛繼承,就是在被繼承的類前面加上virtual關(guān)鍵字,這時被繼承的類稱為虛基類。虛繼承在多重繼承的時可以防止二義性。主要用在如下的菱形繼承:

class A class B1:public virtual A; class B2:public virtual A; class D:public B1,public B2;

由于共享所以不必要在對象內(nèi)存中保存多份虛基類子對象的拷貝,這樣較之多繼承節(jié)省空間。虛擬繼承與普通繼承不同的是,虛擬繼承可以防止出現(xiàn)diamond繼承時,一個派生類中同時出現(xiàn)了兩個基類的子對象。也就是說,為了保證這一點,在虛擬繼承情況下,基類子對象的布局是不同于普通繼承的。因此,它需要多出一個指向基類子對象的指針。


8.什么是虛函數(shù)表?

為實現(xiàn)動態(tài)聯(lián)編,編譯器為每個包含虛函數(shù)的類創(chuàng)建一個表,稱為vtable,在vtable中,編譯器放置了特定類的虛函數(shù)地址,在每個帶有虛函數(shù)的類中編譯器會秘密地設置一個虛函數(shù)表指針,稱為vptr,指向?qū)ο蟮膙table,通過基類指針做虛函數(shù)調(diào)用時,也就是多態(tài)調(diào)用時,編譯器靜態(tài)地插入取得這個vptr,并在vtable表種查找函數(shù)地址的代碼,這樣就能調(diào)用正確的函數(shù)。

9.什么是動態(tài)聯(lián)編?

動態(tài)聯(lián)編是指在程序執(zhí)行的時候才將函數(shù)實現(xiàn)和函數(shù)調(diào)用關(guān)聯(lián),因此也叫運行時綁定或者晚綁定,動態(tài)聯(lián)編對函數(shù)的選擇不是基于指針或者引用,而是基于對象類型,不同的對象類型將做出不同的編譯結(jié)果。C++中一般情況下聯(lián)編也是靜態(tài)聯(lián)編,但是一旦涉及到多態(tài)和虛擬函數(shù)就必須要使用動態(tài)聯(lián)編了。

10.什么是RTTI?

RTTI(Run-Time Type Information)運行時類型檢查的英文縮寫,它提供了運行時確定對象類型的方法,通過RTTI,能夠通過基類的指針或引用來檢索其所指對象的實際類型。c++通過下面兩個操作符提供RTTI:

(1)typeid:返回指針或引用所指對象的實際類型。
(2)dynamic_cast:將基類類型的指針或引用安全的轉(zhuǎn)換為派生類型的指針或引用。
對于帶虛函數(shù)的類,在運行時執(zhí)行RTTI操作符,返回動態(tài)類型信息;對于其他類型,在編譯時執(zhí)行RTTI,返回靜態(tài)類型信息。

參考

眾網(wǎng)友博客

另外有需要云服務器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。

本文題目:劍指XX游戲(四)-輕松搞定面試中的“虛”-創(chuàng)新互聯(lián)
本文網(wǎng)址:http://aaarwkj.com/article38/gjipp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、網(wǎng)站排名網(wǎng)頁設計公司、小程序開發(fā)、手機網(wǎng)站建設、靜態(tài)網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
亚洲中文字幕在线乱码| 欧美高清在线观看一区二区| 国产精品一久久香蕉产线看 | 欧美日韩国产在线91| 美味人妻手机在线观看| 婷婷色爱区综合五月激情| 国产精品美女自拍视频| 人妻av一区二区三区| 蜜臀一区二区三区精品免费| 在线播放国内自拍情侣酒店| 久久综合给合综合久久| 日本韩国亚洲欧美一区二区| 亚洲综合另类小说专区| 亚洲成人福利免费网站| 午夜18禁毛片免费看| 国产中文字幕精品在线| 日韩精品女性三级视频 | 人人妻人人澡人人爽人人老司机| 欧美日韩三级性生活水平| 国产又猛又黄又爽无遮挡| 久久精品一区二区熟女| 国产精品中文字幕有码| 国内丰满少妇嗷嗷叫在线播放| 国产精品大白屁股视频| 亚洲国产欧美日韩在线不卡成人 | 日本一区二区免费高清不卡| 欧美日韩亚洲高清专区| 久久综合婷婷亚洲色图| 日韩欧美的一区二区三区| 亚洲欧洲美洲中文天堂| 国产一区二区精品性浆| 久久精品91久久久| 日本中文有码在线观看| 新人妻一区二区在线视频| 精品久久一区麻豆香蕉| 国产在线自拍一区二区| 国产姐弟操大率悠荡笕| 成人激情在线免费电影| 国产一区二区乱码在线| 久久人妻少妇嫩草av蜜桃综合 | 国产又粗又猛又爽黄老大爷|