2011-10-13 193 views

回答

21

在C++中,如果您在基類中聲明方法virtual,那麼即使省略了關鍵字virtual,它在派生類中也是虛擬的。

但是,對於文檔的目的,我認爲很高興重複它。

0

當一個類繼承一個虛擬函數時,即使沒有使用關鍵字virtual,該函數的任何新的重寫聲明也會自動變爲虛擬。

2

函數仍然是虛擬的(假設它具有相同或協變的簽名)。當覆蓋是冗餘時使用virtual

+3

這對編譯器來說可能是多餘的,但對於任何使用該類的人來說都是很好的文檔。 –

+0

@LokiAstari:對。 – PlasmaHH

5

你不能做一個非虛擬的功能,所以它將保持虛擬,並且對函數的調用通常也是虛擬的。當然,在某些情況下,編譯器可以優化並直接調用,但顯然不適用於您的情況。

1

爲派生類創建虛擬方法(當您將方法標記爲虛擬時,它將在派生類上使用vtable)。被覆蓋的方法將是虛擬的。