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"; // 再代入不可、コンパイルエラー。