先來看一段話:
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
};