C++ 11 :override 关键字的使用

发布时间 2023-05-02 21:56:06作者: imxiangzi

override 关键字

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

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

使用以后有以下好处:

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

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

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

override 使用举例

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

#if 1

public :

virtual String toString() override {

//...

}

#else

public :

virtual String toString() override=0;

#endif

正确的是:

public :

String toString() override {

//...

}

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

// 注意这里的小写方法,实际上是错误的。

public :

String tostring() {

    //...

}

 

相反,如果你很机智,在知道自己要重写父类的方法,加上了 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;

}

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

如果说我的文章对你有用,只不过是我站在巨人的肩膀上再继续努力罢了。

若在页首无特别声明,本篇文章由 Schips 经过整理后发布。

博客地址:https://www.cnblogs.com/schips/

https://www.cnblogs.com/schips/p/cpp11_override.html