Functions intended to override others should be marked as such. This will improve readability as well as catch typos and type mismatch immediately.

It is unfortunate that its use is not required, as backwards compatibility is in the way. Note that GCC 5.1+ has added new warning suggest-override that you can pass as command line option -Wsuggest-override. Perhaps we should use it…

  class A {
    virtual void x() {}
    virtual void y() {}
  };

  class B : public A {
    void x() override {}      // good
    void y()          {}      // accepted???? override optional
    void x(int i) override {} // rejected, as intended
    void y(int i)          {} // accepted, is it intended or not?
    void x(double d) {}       // not sure what happens here.
    void y(double d) {}       // accepted, as it always was.
  };