當(dāng)一個派生類要使用多重繼續(xù)的時候,必須在派生類名和冒號之后列出所有基類的類名,并用逗好分隔。//程序作者:管寧
在圖中深紅色標(biāo)記出來的地方正是主要問題所在,水陸兩用汽車類繼續(xù)了來自Car類與Boat類的屬性與方法,Car類與Boat類同為AmphibianCar類的基類,在內(nèi)存分配上AmphibianCar獲得了來自兩個類的SetWeight()成員函數(shù),當(dāng)我們調(diào)用a.SetWeight(3)的時候計算機(jī)不知道如何選擇分別屬于兩個基類的被重復(fù)擁有了的類成員函數(shù)SetWeight()。 由于這種模糊問題的存在同樣也導(dǎo)致了AmphibianCar a(4,200,1.35f);執(zhí)行失敗,系統(tǒng)會產(chǎn)生Vehicle”不是基或成員的錯誤。 以上面的代碼為例,我們要想讓AmphibianCar類既獲得一個Vehicle的拷貝,而且又同時共享用Car類與Boat類的數(shù)據(jù)成員與成員函數(shù)就必須通過C++所提供的虛擬繼續(xù)技術(shù)來實(shí)現(xiàn)。 我們在Car類和Boat類繼續(xù)Vehicle類出,在前面加上virtual要害字就可以實(shí)現(xiàn)虛擬繼續(xù),使用虛擬繼續(xù)后,當(dāng)系統(tǒng)碰到多重繼續(xù)的時候就會自動先加入一個Vehicle的拷貝,當(dāng)再次請求一個Vehicle的拷貝的時候就會被忽略,保證繼續(xù)類成員函數(shù)的唯一性。 新聞熱點(diǎn)
疑難解答