C++ 关键字之override

非原创,转载自stackoverflow

确切的说override并非一个keyword

The override keyword serves two purposes:

  1. It shows the reader of the code that "this is a virtual method, that is overriding a virtual method of the base class." (给人看)
  2. The compiler also knows that it's an override, so it can "check" that you are not altering/adding new methods that you think are overrides.(让编译器确认)

To explain the latter:

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


class derived: public base
{
   public:
     int foo(float x) override { ... do stuff with x and such ... }
}

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

In derived2 the compiler will issue an error for "changing the type". Without override, at most the compiler would give a warning for "you are hiding virtual method by same name".

 
原文地址:https://www.cnblogs.com/sarah-zhang/p/8403280.html