Декларатор ссылки Lvalue: &

Хранит адрес объекта, но работает синтаксически как объект.

type-id & cast-expression

Заметки

Можно представить себе как ссылки lvalue другого имени объекта.Объявление ссылок lvalue состоит из описателей, за которым следует декларатором необязательного списка ссылок.Ссылка должен быть инициализирован и не может быть изменена.

Любой объект, адрес которого можно преобразовать к данному указателю тип можно также преобразовать к подобному ссылочному типу.Например, любой объект, адрес которого можно преобразовать в тип char * также может быть преобразовано в тип char &.

Не следует путать с помощью объявления ссылки оператор взятия адреса.После & Идентификатор предшествует типом, например int OR char" Идентификатор объявляется как ссылка на тип.После & Идентификатор не предшествует типом, потребление из оператора взятия адреса.

Пример

В следующем примере демонстрируется декларатор ссылки, объявив a 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;
}
  

См. также

Ссылки

Ссылки (C++)

Аргументы функции ссылочного типа

Функции ссылочного типа возврата

Ссылки к указателям