先来看一段话:
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
};