« ファルファッレ | メイン | ルノワールは無邪気に微笑む »

派生クラスでオーバーライドしたときにvirtualをつけると読みやすくなる

派生クラスでオーバーライドしたときに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();
  …
};

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/691

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2008年01月17日 12:58に投稿されたエントリーのページです。

ひとつ前の投稿は「ファルファッレ」です。

次の投稿は「ルノワールは無邪気に微笑む」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35