左辺値参照宣言子: と
オブジェクトのアドレスを保持しますがオブジェクトなどに構文的に実行されます。
type-id & cast-expression
解説
オブジェクトの別の名前には左辺値の参照と考えることができます。lvalue 参照の宣言は参照宣言子に続けて指定子のオプションのリストから構成されます。参照が初期化され変更できません。
特定のポインターのアドレスが型に変換できるような参照型オブジェクトでも変換することもできます。char & を入力するにたとえばchar * を入力するためのアドレスを変換できるオブジェクトでも変換できます。
アドレス演算子 を使用して参照の宣言を混同しないでください。& 識別子 が型に intまたは char などの付いたと 識別子 として型への参照として宣言されています。& 識別子 が型を指定しない場合アドレス演算子の場合です。
使用例
次の例はオブジェクトへの Person のオブジェクトと参照の宣言によって参照宣言子を示します。rFriend が myFriend への参照であるためどちらの変数を更新しても同じオブジェクトを変更します。
// reference_declarator.cpp
// compile with: /EHsc
// Demonstrates the reference declarator.
#include <iostream>
using namespace std;
struct Person
{
char* Name;
short Age;
};
int main()
{
// Declare a Person object.
Person myFriend;
// Declare a reference to the Person object.
Person& rFriend = myFriend;
// Set the fields of the Person object.
// Updating either variable changes the same object.
myFriend.Name = "Bill";
rFriend.Age = 40;
// Print the fields of the Person object to the console.
cout << rFriend.Name << " is " << myFriend.Age << endl;
}