分享方式:


警告 C26435

函式 ' symbol ' 應該只指定 'virtual'、'override' 或 'final' 的其中一個 (c.128)

C++ Core Guidelines

C.128:虛擬函式應該只指定其中一個虛擬、覆寫或最終函式

為了改善可讀性,應該清楚且不需要備援的虛擬行為類型。 雖然多個虛擬規範可以同時使用,但最好一次指定一個來強調虛擬行為最重要的層面。 下列重要性順序很明顯:

  • 純虛擬函式;
  • 明確覆寫其基底的 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.
        //...
    }
};

另請參閱

C.128:虛擬函式應該只指定其中一個虛擬、覆寫或最終函式