Поделиться через


Ссылки (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.декларатор:

  • Необязательный модификатор, характерной для Майкрософт.Дополнительные сведения см. в разделе модификаторы Майкрософт-Специфического.

  • Оператор &.

  • Необязательно Const и/или volatile qualifers.

  • Идентификатор.

3.Необязательный инициализатор.

Более сложной формы декларатора для указателей на массивы и функциям также применяются к ссылкам на массивы и функции, см. в разделе указатели и деклараторы.

Несколько деклараторы и инициализаторы могут входить в список с разделителями-запятыми, за которым следует один описателем объявления.Примеры.

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);
}
  

Комментарий

Подразделы в этом разделе:

См. также

Ссылки

Инициализация ссылки