Udostępnij za pośrednictwem


Deklarator odwołań Lvalue: &

Przechowuje adres obiektu, ale zachowuje się składniowo jak obiekt.

Składnia

lvalue-reference-type-id:
type-specifier-seq&attribute-specifier-seqopt opt optptr-abstract-declarator

Uwagi

Odwołanie lvalue można traktować jako inną nazwę obiektu. Deklaracja referencyjna lvalue składa się z opcjonalnej listy specyfikatorów, po której następuje deklarator odwołania. Odwołanie musi zostać zainicjowane i nie można go zmienić.

Każdy obiekt, którego adres można przekonwertować na dany typ wskaźnika, można również przekonwertować na podobny typ odwołania. Na przykład każdy obiekt, którego adres można przekonwertować na typ char * , można również przekonwertować na typ char &.

Nie należy mylić deklaracji referencyjnych z użyciem operatora address-of. &Gdy identyfikator jest poprzedzony typem, takim jak int lub char, identyfikator jest zadeklarowany jako odwołanie do typu. Jeśli &identyfikator nie jest poprzedzony typem, użycie jest użyciem operatora address-of.

Przykład

W poniższym przykładzie pokazano deklarator odwołania przez zadeklarowanie Person obiektu i odwołanie do tego obiektu. Ponieważ rFriend jest odwołaniem do myFriendmetody , aktualizowanie każdej zmiennej zmienia ten sam obiekt.

// 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;
}
Bill is 40

Zobacz też

Odwołania
Argumenty funkcji typu odwołania
Funkcja typu odwołania zwraca
Odwołania do wskaźników