是否應該明確標記爲虛擬全部覆蓋任何級別的後代類?是否應該聲明在所有級別的繼承或僅在祖先級別虛擬的函數?
class Base {
// ...
protected:
virtual void to_be_derived() const; // First level to introduce this virtual function
};
class LevelOne : public Base {
// ...
protected:
// virtual??
void to_be_derived() const;
};
class LevelTwo : public levelOne {
// ...
protected:
// virtual??
void to_be_derived() const;
};
我沒有看到Prefixing virtual keyword to overridden methods它回答我的問題。特別是,其中的一個答案已更新,以反映與C++ 11相關的當前使用情況,特別是我不知道的override
關鍵字!
編輯:我寧願接受來自鏈接問題的後C++ 11代碼的另一個答案。
在dervied類中默認是虛擬的,所以添加虛擬後綴與否,函數將是虛擬的 – jonezq
請注意,即使使用'override' /'final'的(正確)答案已經出現在上面的問題中。 –
@jonezq我知道這個函數仍然是虛擬的,但我將它看作是向*類用戶顯式傳達它是虛擬的。 –