参照 (C++)
参照は次の構文を使用して宣言できます。
[storage-class-specifiers] [cv-qualifiers] type-specifiers
[ms-modifier] declarator [= expression];
参照を指定する任意の有効な宣言子を使用できます。 参照が関数または配列型への参照でない限り、次の簡略化された構文が適用されます。
[storage-class-specifiers] [cv-qualifiers] type-specifiers &
[cv-qualifiers] identifier [= expression];
参照は次の順序で宣言します。
1. 宣言指定子:
ストレージ クラスの指定子 (省略可能)。
const/volatile 修飾子 (省略可能)。
型指定子: 型の名前。
2. 宣言子:
オプションの Microsoft 固有の修飾子。 詳細については、「Microsoft 固有の修飾子」を参照してください。
& 演算子。
const/volatile 修飾子 (省略可能)。
識別子。
3. 初期化子 (省略可能)。
配列と関数へのポインターに対するより複雑な宣言子の形式は、配列と関数の参照にも適用されます。「ポインター」と「宣言子」を参照してください。
1 つの宣言指定子の後のコンマ区切りリストに、複数の宣言子と初期化子を含めることができます。 次に例を示します。
int &i;
int &i, &j;
次のように、参照、ポインター、およびオブジェクトをまとめて宣言できます。
int &ref, *ptr, k;
参照は、オブジェクトのアドレスを保持しますが、構文的にはオブジェクトと同様に動作します。
次のプログラムでは、オブジェクトの名前 Today とオブジェクトへの参照 TodayRef を、プログラム内で同じように使用できることに注意してください。
使用例
// references.cpp
#include <stdio.h>
struct S {
short i;
};
int main() {
S s; // Declare the object.
S& SRef = s; // Declare the reference.
s.i = 3;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
SRef.i = 4;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
}
コメント
このセクションのトピック