虛繼承

對於繼承概念中的虛函數 ， 請參閱虛函數 。 虛繼承 是面向對象編程中的一種技術 ， 是指一個指定的基類 ， 在繼承體系結構中 ， 將其成員數據實例共享給也從這個基類型直接或間接派生的其它類 。 舉例來說 ： 假如類A和類B各自從類X派生 （ 非虛繼承且假設類X包含一些數據成員 ） ， 且類C同時多繼承自類A和B ， 那麼C的對象就會擁有兩套X的實例數據 （ 可分別獨立訪問 ， 一般要用適當的消歧義限定符 ） 。 但是如果類A與B各自虛繼承了類X ， 那麼C的對象就只包含一套類X的實例數據 。 對於這一概念典型實現的編程語言是C + + 。 這一特性在多重繼承應用中非常有用 ， 可以使得虛基類對於由它直接或間接派生的類來說 ， 擁有一個共同的基類對象實例 。 避免由於帶有歧義的組合而產生的問題 （ 如 “ 菱形繼承問題 ” ） 。 其原理是 ， 間接派生類 （ C ） 穿透了其父類 （ 上面例子中的A與B ） ， 實質上直接繼承了虛基類X 。 這一概念一般用於 “ 繼承 ” 在表現爲一個整體 ， 而非幾個部分的組合時 。 在C + + 中 ， 基類可以通過使用關鍵字virtual來聲明虛繼承關係 。