c++ - C++ 中的 'override' 关键字是做什么用的?

标签 c++ c++11 overriding

我是 C++ 的初学者。我遇到了我正在处理的头文件中使用的 override 关键字。请问,override的真正用途是什么,或许举个例子就容易理解了。

最佳答案

override 关键字有两个用途:

  1. 它向代码的读者展示了“这是一个虚方法,它覆盖了基类的虚方法。”
  2. 编译器也知道它是一个覆盖,因此它可以“检查”您没有更改/添加您认为是覆盖的新方法。

解释后者:

class base
{
  public:
    virtual int foo(float x) = 0; 
};


class derived: public base
{
   public:
     int foo(float x) override { ... } // OK
};

class derived2: public base
{
   public:
     int foo(int x) override { ... } // ERROR
};

derived2中,编译器会发出“改变类型”的错误。如果没有override,编译器最多会给出一个警告“you are hidden virtual method by same name”。

关于c++ - C++ 中的 'override' 关键字是做什么用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18198314/

相关文章:

python - 如何覆盖第 3 方安装的应用程序 django 的模型默认方法?

java - 属性和多态性

python - Django 模型 : How to use mixin class to override django model for function likes save

c# - 声明连接变量

c++ - 什么会导致初始化顺序损坏堆栈?

c++ - 为什么 regex_search 不需要命名空间

c++ - 用户定义类的哈希函数。如何交 friend ? :)

c++ - 有没有办法在成员名称循环中对 N C++ 类成员应用操作(可能通过预处理器)?

c++ - 覆盖非虚函数

c++ - 新分配的先前数据会发生什么变化?