如果在大量遺產中關鍵字virtual
被遺忘了,會發生什麼情況?虛擬繼承:如果關鍵字在某個時刻被遺忘會發生什麼?
例如:
struct I {};
struct A : virtual I {};
struct B : A, virtual I {};
struct C : B, /* virtual */ I {}; // ooops, distraction error
是不是像在方法的情況下,一旦一個方法是虛擬的它住宿虛擬永恆,要麼是struct C
重新引入鑽石問題?
有沒有辦法讓編譯器檢查這種類型的錯誤,類似的方式是新的override
關鍵字正在檢查正確的重寫虛擬方法?
編譯器如何知道這是一個錯誤?這是完全有效和合理的代碼。另外,爲什麼你會如此使用虛擬繼承? –
從編譯器視圖看,這不是錯誤,而且這樣的代碼是合理的(ish)?在我所有的編碼年代裏,我從來沒有在自己的生活中使用過鑽石遺產。我想,如果你已經用這種繼承來設計你的系統,那就回去重新設計吧。 – SergeyA
會發生什麼情況是您的單元測試失敗。 –