参照 (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);
}
  

コメント

このセクションのトピック

参照

関連項目

参照の初期化