const char* const ってなんで2回もつけるんだよ。

2014年3月4日

C++においては、一般的にC言語のような#defineで定数を書く代わりに
constの定数を使えと言われます。
その際にint型では、

const int MAX_VALUE = 100;

とかで良いのですが、文字列の場合、

const char* const DEFAULT_NAME = "hogehoge";

のような感じになります。
えっ。2つのconstの違いは何かって?
さあ?最底辺に聞かれましてもねえ。
まあ、たしかどっちかがポインタのconstでもう一つがポインタの指し先のconstです。
ちなみに#defineを使わない理由は、型が安全でないからという話と
スコープ範囲が広いということらしいです。
まあ、constはれっきとした定義、#defineはタダの置き換えになるという感じなので
C++でも定数宣言以外では、#defineが超絶に便利な場合があるのですがね。
では。

c++

Posted by koheizi