派生クラスでオーバーライドしたときにvirtualをつけると読みやすくなる。
という話が『C++ Coding Standards』にあったと思います。たぶん。
//Base.h
class Base
{
virtual void Foo();
…
};
//Derived.h
class Derived : public Base
{
void Foo();
void Bar();
…
};
Derivedクラスのメソッド「Foo」「Bar」は、Baseクラスのメソッドをオーバーライドしているのか、
Derived.hを見ただけではわかりません。
Base.hを確認する必要があります。
時として、意図しないオーバーライドで思わぬ問題が発生することがあります。
# 特にアクセス制限の少ないrubyで。
# 明示してオーバーライドするDelphiやC#がうらやましい。
派生クラスの方にも、「virtual」をつけると多少わかりやすくなります。
//Derived.h
class Derived : public Base
{
//Foo()は基本クラスをオーバーライドしている
virtual void Foo();
//Bar()は基本クラスをオーバーライドしていない
void Bar();
…
};