Ссылки (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);
}
Комментарий
Подразделы в этом разделе: