警告 C26435
函式 ' symbol ' 應該只指定 'virtual'、'override' 或 'final' 的其中一個 (c.128)
C++ Core Guidelines
為了改善可讀性,應該清楚且不需要備援的虛擬行為類型。 雖然多個虛擬規範可以同時使用,但最好一次指定一個來強調虛擬行為最重要的層面。 下列重要性順序很明顯:
- 純虛擬函式;
- 明確覆寫其基底的 virtual 函式;
- 虛擬函式會覆寫其基底,並提供目前繼承鏈結中的最終實作。
備註
- 此規則會略過解構函式,因為它們有關于虛擬的特殊規則。
- 警告會顯示在函式定義上,而不是宣告。 這可能會造成混淆,因為定義沒有虛擬規範,但警告仍然適用。
程式碼分析名稱: SINGLE_VIRTUAL_SPECIFICATION
範例:備援規範
class Ellipse : public Shape {
public:
void Draw() override {
//...
}
};
class Circle : public Ellipse {
public:
void Draw() override final { // C26435, only 'final' is necessary.
//...
}
};