C++ 再入門ブーム
参考になりまする.
const が出てきた。これ重要。
一応 const の例を全部書いてみよう。
const char* s = "hige"; // ポインタ s の指す先 変更不可 const char&r = s[0]; // r の参照先 変更不可 const int i = 1234; // i の値 変更不可 char* const p = "hige"; // p 変更負荷
以前『C++ と const 参照 - NyaRuRuの日記』でも書きましたが,const 怖いよ const な私のイメージはこんな感じ.
- s はアドレスの入った箱で,こいつを通しては変更不能.だけど指す先が不変値とは限らない.
- r は箱っぽい名札で,こいつを通しては変更不能.だけど指す先が不変値とは限らない.
- i は不変値の入った箱.
- p は不変なアドレスの入った箱.
C++ で不変値を中心にプログラミングしたい場合,const T& は微妙に使えなくてコピーだらけになるという印象があるのですが,皆さんどうされているんでしょうね?
追記
- D 言語における invariant がまさに私の欲しいものらしい.
- Const と Invariant - プログラミング言語 D 2.0
- Here A Const, There A Const - プログラミング言語 D 2.0
- C++ の const に関する良いまとめにもなっている