天天看點

C++11 override

先來看一段話:

override: Specifies that a virtual function overrides another virtual function. In a member function declaration or definition, override ensures that the function is virtual and is overriding a virtual function from the base class. The program is ill-formed (a compile-time error is generated) if this is not true.

override是C++11中的一個繼承控制關鍵字,override確定一個函數為虛并重寫基類的虛函數。

聲明了該關鍵字,則編譯器會檢查基類虛函數和派生類該虛函數的簽名比對與否問題,如果簽名不比對,則編譯器會發出錯誤資訊。

舉個例子:

class base
{
public:
    virtual void func1();
    virtual void func2() const;
    vitrual void func3(int a);
    void func4(); 
    base* func5();  
};

class derive : public base 
{
public:
    virtual void func1() override; // virtual可寫可不寫,推薦不寫   編譯不通過-基類沒有同名虛函數
    virtual void func2() override;  // 編譯不通過-常量性不一緻
    virtual void func3(double a) override;  // 編譯不通過-參數類型不一緻
    void func4() override;  // 編譯不通過-不是虛函數
    derive* func5() override; // 注意: 編譯通過了!! vs2015
};
           

繼續閱讀