const char * const

晴れ。苦手な3D計算に一日悩んでいた。もう4x4マトリックスは見たくないよ><

Javaでfinalと書くと変更不能になる。Stringも不変なので、こうやって書くとnameへの再代入もできないし、nameの指すオブジェクトの状態を変えることもできなくなり、みんな幸せ。

final String name = "hoge";

C++ではconstと書くと似たようなことができる。

const char* name = "hoge";

これは落とし穴で、実はnameは変更できる。

const char* name = "hoge";
name = "moge";   // 再代入できちゃう

この場合、nameは「const char*」型を入れることが出来る変更可能な変数ですよ、という意味になる。Scalaの var name:String = "hoge" と同じ状態。finalやvalのように変数も不変にしたい場合はこうすると良い。

const char* const name = "hoge";
name = "moge";  // 再代入不可、コンパイルエラー。


[ 編集 | 凍結 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]
Last-modified: 2012-02-29 (水) 14:01:16 (2452d)