在很多多態的例子中,我們都可以看到將基類的方法聲明為純虛函數(virtual void run() const = 0;),這樣可以要求子類必須實現這個方法,同時可以體現面向接口編程。
使用virtual的地方還有虛擬繼承和虛擬析構函數。
例子:
































class SubClass : virtual public BaseClass 中以virtual聲明的基類??!由于C++支持多重繼承,所以對于一個派生類中有幾個直接父類,而幾個直接父類中有幾個可能分別繼承自某一個基類(就是父類的父類),這樣在構造最終派生類時,會出現最終派生類中含有多個同一個基類的情況,就會產生二義性的問題(不知道該調用哪個基類的成員變量和函數),為解決此問題,需要使用虛基類,即只對此基類生成一塊內存區域,這樣最終派生類中就只會含有一個基類了。
虛擬繼承的作用:解決由多繼承中,父類中可能有相同的父類而引發的二義性問題。虛擬繼承的虛擬和虛擬函數的虛擬沒有任何關系。