Odwołania (C++)
Odwołanie, takie jak wskaźnik, przechowuje adres obiektu znajdującego się w innym miejscu w pamięci. W przeciwieństwie do wskaźnika odwołanie po zainicjowaniu nie może być wykonane w celu odwoływania się do innego obiektu lub ustawiania wartości null. Istnieją dwa rodzaje odwołań: odwołania lvalue, które odnoszą się do nazwanej zmiennej i odwołań rvalue, które odwołują się do obiektu tymczasowego. Operator &
oznacza odwołanie lvalue, a &&
operator oznacza odwołanie rvalue lub odwołanie uniwersalne (rvalue lub lvalue) w zależności od kontekstu.
Odwołania mogą być deklarowane przy użyciu następującej składni:
[storage-class-specifiers] [cv-kwalifikatory] specyfikatory typów [ms-modifier] deklarator [
=
expression];
Można użyć dowolnego prawidłowego deklaratora określającego odwołanie. Jeśli odwołanie nie jest odwołaniem do funkcji lub typu tablicy, stosowana jest następująca uproszczona składnia:
[storage-class-specifiers] [cv-kwalifikatory] specyfikatory typów [
&
lub&&
] [cv-kwalifikatory] identyfikator [=
wyrażenie];
Odwołania są deklarowane przy użyciu następującej sekwencji:
Specyfikatory deklaracji:
- Opcjonalny specyfikator klasy magazynu.
- Opcjonalne
const
i/lubvolatile
kwalifikatory. - Specyfikator typu: nazwa typu.
Deklarator:
Opcjonalny modyfikator specyficzny dla firmy Microsoft. Aby uzyskać więcej informacji, zobacz Modyfikatory specyficzne dla firmy Microsoft.
&
Operator lub&&
operator.Opcjonalne
const
i/lubvolatile
qualifers.Identyfikator.
Opcjonalny inicjator.
Bardziej złożone formularze deklaratora dla wskaźników do tablic i funkcji dotyczą również odwołań do tablic i funkcji. Aby uzyskać więcej informacji, zobacz wskaźniki.
Wiele deklaratorów i inicjatorów może pojawić się na liście rozdzielanej przecinkami po specyfikatorze pojedynczej deklaracji. Na przykład:
int &i;
int &i, &j;
Odwołania, wskaźniki i obiekty mogą być deklarowane razem:
int &ref, *ptr, k;
Odwołanie zawiera adres obiektu, ale zachowuje się składniowo jak obiekt.
W poniższym programie zwróć uwagę, że nazwa obiektu , s
i odwołanie do obiektu SRef
, może być używane identycznie w programach:
Przykład
// references.cpp
#include <stdio.h>
struct S {
short i;
};
int main() {
S s; // Declare the object.
S& SRef = s; // Declare and initialize 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);
}
3
3
4
4
Zobacz też
Argumenty funkcji będące odwołaniami
Wartości zwracane przez funkcje będące odwołaniami
Odwołania do wskaźników
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla