Share via


Declarador de referência Lvalue: &

Contém o endereço de um objeto mas se comporta sintaticamente como um objeto.

Sintaxe

lvalue-reference-type-id:
type-specifier-seq&attribute-specifier-seqoptptr-abstract-declaratoropt

Comentários

Você pode pensar em uma referência de lvalue como outro nome para um objeto. Uma declaração de referência de lvalue consiste de uma lista opcional de especificadores seguidos por um declarador de referência. Uma referência deve ser inicializada e não pode ser alterada.

Qualquer objeto cujo endereço possa ser convertido em um determinado tipo de ponteiro também pode ser convertido no tipo semelhante de referência. Por exemplo, qualquer objeto cujo endereço possa ser convertido para o tipo char * também pode ser convertido para o tipo char &.

Não confunda declarações de referência com o uso do operador address-of. Quando o &identificador é precedido por um tipo como int ou char, o identificador é declarado como uma referência ao tipo. Quando o &identificador não é precedido por um tipo, o uso é o do operador address-of.

Exemplo

O exemplo a seguir demonstra o declarador de referência declarando um objeto Person e uma referência a esse objeto. Como rFriend é uma referência a myFriend, atualizar qualquer variável altera o mesmo objeto.

// 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

Confira também

Referências
Argumentos de função de tipo de referência
A função de tipo de referência retorna
Referências a ponteiros