日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

抽象类(纯虚函数、虚函数)和虚基类(虚继承)

發(fā)布時(shí)間:2023/11/30 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 抽象类(纯虚函数、虚函数)和虚基类(虚继承) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

C++多態(tài)

C++的多態(tài)包括靜態(tài)多態(tài)和動(dòng)態(tài)多態(tài),靜態(tài)多態(tài)包括函數(shù)重載和泛型編程,動(dòng)態(tài)多態(tài)包括虛函數(shù)。靜態(tài)多態(tài)實(shí)在編譯期間就能確定,動(dòng)態(tài)多態(tài)實(shí)直在程序運(yùn)行時(shí)才能確定。

抽象類

虛函數(shù)

在默認(rèn)情況下對函數(shù)成員調(diào)用實(shí)施的是靜態(tài)連編,也叫做靜態(tài)綁定。如果子類中的函數(shù)fff覆蓋了父類中的函數(shù)fff,那么基類中的其他函數(shù)調(diào)用函數(shù)fff的時(shí)候調(diào)用的仍然是基類中的函數(shù)而不是子類的。

為了解決這個(gè)問題可以在基類和子類的fff函數(shù)前加上virtual關(guān)鍵字,該函數(shù)就會(huì)變成虛函數(shù),當(dāng)在子類中調(diào)用基類的函數(shù)時(shí),如果該函數(shù)調(diào)用到函數(shù)fff調(diào)用的就是子類的函數(shù)。

對于虛函數(shù),編譯器完成的是動(dòng)態(tài)連編(動(dòng)態(tài)綁定)面對虛函數(shù)的調(diào)用是在程序運(yùn)行的時(shí)候確定的。

純虛函數(shù)

在實(shí)際編程中我們有些方法經(jīng)常沒有辦法實(shí)現(xiàn)(沒有對應(yīng)的成員或者不同的子類實(shí)現(xiàn)方法不同),我們就將函數(shù)聲明為純虛函數(shù),這樣就不需要實(shí)現(xiàn)。純虛函數(shù)的聲明形式為:

virtual 返回類型 方法名(參數(shù)列表)=0;

抽象類指的是含有純虛函數(shù)或者基類的純虛函數(shù)還沒有將其實(shí)現(xiàn)的類。

很顯然,抽象類是不能被實(shí)例化的。只有子類中將所有的純虛函數(shù)都實(shí)現(xiàn)了以后(此時(shí)就不是抽象類了)才可以進(jìn)行實(shí)例化。

虛繼承和虛基類

在多重繼承時(shí)如果我們繼承的類繼承于同一個(gè)類(或者繼承的類之間有繼承關(guān)系等)就會(huì)出現(xiàn)多個(gè)相同的成員的情況,在訪問這些成員的時(shí)候我們必須加上基類的名字空間來進(jìn)行區(qū)別,否則就會(huì)出錯(cuò)。

但是一般情況下這種重復(fù)的變量是沒有什么意義的,為了解決這種重復(fù)沖突加浪費(fèi)的問題,我們可以使用虛繼承,即在繼承的時(shí)候在基類的名字前加上virtual,這樣當(dāng)其他類再繼承這個(gè)類的時(shí)候如果已經(jīng)繼承了更上層的基類只會(huì)保存一份成員。

虛繼承的目的時(shí)讓某個(gè)類作出聲明,承諾愿意共享它的基類。其中這個(gè)被共享的類稱為虛基類

總結(jié)

以上是生活随笔為你收集整理的抽象类(纯虚函数、虚函数)和虚基类(虚继承)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。