2009年7月16日木曜日

C++ const が骨抜きになるシチュエーション

 const が骨抜きになるシチュエーションを考えてみました。
  1. 利用するライブラリが const を使っていない。(引数ぐらい const 修飾子を付けてくれよ・・・と、泣く泣く const_cast と reinterpret_cast を駆使する羽目になるが、一筋縄ではいかず、Cスタイルキャストでお茶を濁すとか、もう const を諦めます・・・と自暴自棄になる)
  2. 利用するクラスが const を使っていない。(今時、const 修飾子ぐらい付けてくれよ・・・と、泣く泣く、そのクラスに引きずられる)
  3. マルチ・スレッドによる同期保護オブジェクトや状態変数があり、mutable するのが面倒になった
  4. あるメンバ・オブジェクトは静的で変更されない事が保障されているから const で十分なのだけども、動的にロード・アンロードを繰り返すので、mutable するしかない。でも、これって const じゃないから、const 修飾子を付けても意味が無いか?と妥協してしまう
  5. 勉強不足で const をよく知らない時のソースを拡張するときに、const を付けると影響範囲が多すぎて愕然とし、自己嫌悪に陥ってしばらく立ち直れない
 実際のところ、const は鬼門のうちのひとつではないかと思います。 const char* const なのか、const char* なのか、よく迷います。あんましconst 修飾子が多いと発狂するかも…(私は const char* const を使う事は、まず無いかも?)。

追記: const なメンバ関数でも、結構付け忘れてる場合ってありますね・・・。ここは、ちょっと反省せねば・・・。

0 件のコメント: