開始するには、おそらくそれを知っています const
使用して、オブジェクトのデータまたはポインタを変更できないようにするか、またはその両方を行うことができることます。
const Object* obj; // can't change data
Object* const obj; // can't change pointer
const Object* const obj; // can't change data or pointer
ただし、次の構文も使用できます。
Object const *obj; // same as const Object* obj;
問題と思われるのは、アスタリスクのどちら側に置くかだけです。 const
キーワードを入力。個人的にconst
は、タイプの左側に置いて、データが変更可能ではないことを指定することを好みます。左から右への考え方ではデータが読みやすいため、どの構文が最初に来るのですか?
さらに重要なのは、なぜ指定する2つの正しい方法があるのか const
データ、また、どのような状況で、どちらか一方を好むか、どちらか一方が必要な場合にどちらが必要かということです。
編集:
ですから、私が生まれるずっと前にコンパイラが物事を解釈する方法の標準が起草されたとき、これは恣意的な決定だったようです。const
はキーワードの左側にあるものに適用されるので(デフォルトでは?)、少なくとも宣言が変更されるときまで、他の方法でキーワードと型修飾子を適用するための「ショートカット」を追加しても害はなかったと思います*または&の解析...
これはCの場合もそうでした。
const
た後、例えば、タイプ#define MAKE_CONST(T) T const
の代わりに、#define MAKE_CONST(T) const T
それはとてもMAKE_CONST(int *)
正確に拡大するint * const
代わりにconst int *
。