讓我們假設我們有有一個虛擬方法的基類:如何確定一個方法覆蓋C++中現有的虛擬方法?
class BaseClass
{
virtual void MethodToOverride() const
{
DoSomething();
}
};
而派生類覆蓋的方法(視情況而定,我們可以讓它再次虛擬與否):
class DerivedClass : public BaseClass
{
void MethodToOverride() const
{
DoSomethingElse();
}
}
如果我們犯了一個錯誤,例如定義MethodToOverride非const或有錯誤的字符,我們簡單地定義一個新的方法,例如:
void MethodToOverride() {} // I forgot the const
void MthodToOverride() const {} // I made a typo
所以這個編譯好,但在運行時會導致不需要的行爲。
是否有任何方法可以將函數定義爲現有函數的顯式重寫,因此如果我錯誤地定義它,編譯器會發出警告?類似的東西(我知道它不存在):
void MethodToOverride() const overrides BaseClass::MethodToOverride() const {}
「(根據情況我們可以再次虛擬或不)」?該方法將是虛擬的,無論你實際上是否將其標記爲虛擬,所以我不太明白你的意思。 – 2010-11-07 14:43:39
是的,我意識到這是錯誤的 – martjno 2010-11-07 15:20:53
得到一些非常好的答案後,我有一些困難,只接受一個:我接受了阿爾弗的一個,因爲這是我尋找的伎倆,但我也喜歡保羅的最佳風格和Vitaut投票未來...感謝所有人 – martjno 2010-11-07 15:29:46