当前位置:   article > 正文

【C++ 11】 override 关键字的使用_c++ override

c++ override

override 关键字

作用:在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。

位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。

使用以后有以下好处:

1.可以当注释用,方便阅读

2.告诉阅读你代码的人,这是方法的复写

3.编译器可以给你验证 override 对应的方法名是否是你父类中所有的,如果没有则报错.

override 使用举例

如果你想重写父类的方法,比如toString()方法:

#if 1
public :
virtual String toString() override {
	//...
}
#else
public :
virtual String toString() override=0;
#endif
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

正确的是:

public :
String toString() override {
	//...
}
  • 1
  • 2
  • 3
  • 4

假如不小心把方法名写错了而没写 override ,这时编译器是可以编译通过的,因为编译器以为这个方法是你的子类中自己增加的方法。如:

// 注意这里的小写方法,实际上是错误的。
public :
String tostring() {
    //...
}
  • 1
  • 2
  • 3
  • 4
  • 5

相反,如果你很机智,在知道自己要重写父类的方法,加上了 override 标签后,编译器会检查出重写方法错误,会保证你重写父类方法的正确性。

例子

#include<iostream>
using namespace std;

class base
{
public:
    virtual void fun1(void)=0;
};

class derived : public base
{
public:
#if 1 //OK
    void fun1(void) override {
        cout << "a fun1" << std::endl;
    }
#else // err
    void fun2(void) override {
        cout << "a fun1" << std::endl;
    }
#endif

private:
    /* data */
};

int main(int argc, char *argv[])
{
    derived test;
    test.fun1();
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

总结:在重写方法时,最好加上这个 override 这个关键字 以 加强代码规范。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/950633
推荐阅读
相关标签
  

闽ICP备14008679号