overrideは仮想関数をオーバーライドしていることを明示する指定子。
新しい機能を与えるものではなく、その関数が本当に基底クラスの仮想関数をオーバーライドしているかをコンパイラに検査させるためのもの。
たとえば、constを付け忘れるなどしてシグネチャが一致しない場合、overrideがあればコンパイルエラーになる。
class Base
{
public:
virtual void print() const
{
}
};
class Derived : public Base
{
public:
void print() override
{
}
};この例では、Base::print() constを正しくオーバーライドしていないためエラーになる。
例
class Base
{
public:
virtual void print() const
{
}
};
class Derived : public Base
{
public:
void print() const override
{
}
};