<< vs2005とツリーと配列 | main | vs2005とごみ箱 >>
2006.04.15 Saturday

vs2005とテンプレートと仮想関数の話

そもそも、どんなときに仮想関数を使うべきか?

これは、極端に言うと、すべて仮想関数にして良い。仮想関数を使う場合のデメリットがいくつかあるんだけど、逆に言うと、そのデメリットが気にならないときは全部仮想関数にしちゃうのが基本。

山ほど構築するクラスの場合、仮想関数を使うとクラスのサイズがポインタ1つ分サイズが大きくなるから、仮想関数を入れるかどうか考えた方が良い。

クラスの変数を無理矢理キャストするような付き方をしたい場合、このときも仮想関数を使ってるとポインタがずれるから、仮想関数を使うかどうか考えないとだめ。


問題は、テンプレートクラスでも仮想関数を使うべきかどうか?

そもそも、テンプレートクラスから、さらにクラスを派生させるような使い方に問題があるような気がしないでもないけど、これは、できた方が便利なんだから仕方がない。

派生できた方が便利だからといって、テンプレートクラスでもすべて仮想関数にして良いかというと・・・ そうでもないんだなぁ。ふつう、テンプレートクラスのメンバ関数は必要になったときだけ実体化されるんだけど、仮想関数にしたら必ず実体化されるようになっちゃう。まぁ、これも、当たり前といえば当たり前。

つまり、テンプレートクラスのメンバ関数は仮想関数にするかどうか、まじめに考えないと>昔の俺
コメント
コメントする








 
この記事のトラックバックURL
トラックバック
Calendar
1234567
891011121314
15161718192021
22232425262728
293031    
<< July 2018 >>
Selected Entries
Categories
Archives
Recent Comment
Links
Profile
Search this site.
Others
Mobile
qrcode
Powered by
30days Album
無料ブログ作成サービス JUGEM