** const char * const [#b6a4d370]
> 晴れ。苦手な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";  // 再代入不可、コンパイルエラー。


----
#comment(nodate);

[ 編集 | 差分 | 添付 | 複製 | 名前変更 | リロード ]   [ 新規 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]