メソッドがクラス内で宣言されるvirtual
と、派生クラスでのオーバーライドも自動的に考慮virtual
され、C ++言語ではvirtual
、この場合、このキーワードがオプションになります。
class Base {
virtual void f();
};
class Derived : public Base {
void f(); // 'virtual' is optional but implied.
};
virtual
私の質問は:オプションにする理由は何ですか?
コンパイラーにそのように言われる必要は絶対にないことは知っていますが、そのような制約がコンパイラーによって強制されれば、開発者は恩恵を受けると思います。
たとえば、他の人のコードを読んだときに、メソッドが仮想であるかどうか疑問に思うことがあり、それを決定するためにそのスーパークラスを追跡する必要があります。また、一部のコーディング標準(Googlevirtual
)では、すべてのサブクラスにキーワードを配置する必要があります。