例如:重寫純虛函數時,有沒有使用`override`的意思?
class Base {
virtual void my_function() = 0;
};
class Derived : Base {
void my_function() override;
};
從我讀的override
關鍵字用來確保我們有在我們覆蓋的功能正確的簽名,這似乎是其唯一的用途。
然而,在一個純虛函數的情況下,編譯器會如果我們在派生類中使用了不正確的簽名(或基類,這取決於一個人如何看待事物)拋出一個錯誤。那麼,Derived::my_function()
聲明的末尾是否還有點加override
?
請注意,抽象*傳播*。如果你在'Derived'類中提供了錯誤的簽名,那麼'Derived'類也變得很抽象。如果沒有'override'關鍵字,可能無法在正確的位置檢測到。 –
它確保如果基類與「override」斷言不兼容,您的代碼將無法編譯。 – EJP
「penning有針對性的教學程序傳播優先編程實踐」 - T.J.Elgan – coderatchet