オブジェクト
宣言:インデックス への移動
オブジェクトは,固定値あるいは可変値(または値の集合)を保持する識別可能な記憶領域です (ここで用いるオブジェクトを,オブジェクト指向言語のオブジェクトと混同しないでください)。値には,その値に結び付けられた名前と型(データ型)があります。名前はオブジェクトにアクセスするために使用されます。この名前は,単なる識別子である場合と,オブジェクトを一意に参照するための複雑な式である場合があります。データ型は,以下の目的で使用されます。
- 必要なメモリの適正な割り当てを決定する
- 以降のアクセスでオブジェクト内のビットパターンを解釈する
- 多くの型チェックの状況で不正な代入を確実に捕捉する
Borland C++ コンパイラは,多くの標準のデータ型をサポートしており,これには,さまざまなサイズの符号付き/符号なし整数,精度の異なる浮動小数点数,構造体,共用体,配列,クラスなどがあります。さらに,メモリ上で,これらのほとんどのオブジェクトに対してポインタを設定したり操作したりできます。
オブジェクトと宣言
宣言を行うことにより,識別子とオブジェクトの間に必要なマッピング(対応付け)が確立されます。各宣言によって,識別子とデータ型が結び付けられます。また,ほとんどの宣言は定義宣言と呼ばれ,オブジェクトの生成(場所と時間)-- 物理的なメモリの割り当てと場合によっては初期化 -- を確立させます。その他の宣言は参照宣言と呼ばれ,識別子とデータ型をコンパイラに単に認識させるだけです。同一の識別子に対して,(特に複数ファイルのプログラムでは)多くの参照宣言が可能ですが,定義宣言はただ 1 つしか許されません。
一般的には,識別子がソースコード中の宣言箇所よりも前では正しく使用することができません。この規則の正しい例外が前方参照と呼ばれるもので,ラベル,クラス,構造体,共用体タグ,宣言されていない関数の呼び出しがあります。
左辺値
左辺値とは,オブジェクトロケータ,つまりオブジェクトの指定を行う式のことです。左辺値の一例として *P を挙げることができます。P はヌルでないポインタとして評価されるすべての式を意味します。変更可能な左辺値とは,メモリ内でアクセスでき,正当に変更できるオブジェクトに関連する識別子あるいは式のことです。たとえば,定数への const ポインタは変更不可能な左辺値です。定数へのポインタは変更することができます(ただし,そのポインタで参照される値は変更できません)。
左辺値という呼び名は,代入文の左辺(値を受け取る側)に置くことができるところからきています。実際には,変更可能な左辺値のみを代入文の左辺に置くことができます。たとえば,a と b が記憶領域に割り当てられた定数でない整数の識別子である場合,a と b は変更可能な左辺値であり,a = 1,b = a + b のような代入は正当です。
右辺値
a + b という式は左辺値ではありません。つまり,a + b = a は不正で,これは左辺の式が特定のオブジェクトに結び付けられないためです。このような式は,右辺値と呼ばれる場合もあります。