Referências (C++)
Uma referência, como um ponteiro, armazena o endereço de um objeto localizado em outro lugar na memória. Ao contrário de um ponteiro, uma referência depois de inicializada não pode ser feita para se referir a um objeto diferente ou definir como nulo. Há dois tipos de referências: referências lvalue que se referem a uma variável nomeada e referências rvalue que se referem a um objeto temporário. O &
operador significa uma referência lvalue e o &&
operador significa uma referência rvalue ou uma referência universal (rvalue ou lvalue) dependendo do contexto.
As referências podem ser declaradas usando a seguinte sintaxe:
[especificadores de classe de armazenamento] [qualificadores de cv] especificadores de tipo [modificador de ms] declarador [
=
expressão];
Qualquer declarador válido que especifique uma referência pode ser usado. A menos que se trate de uma referência para um tipo de matriz ou função, a seguinte sintaxe simplificada se aplica:
[especificadores de classe de armazenamento] [qualificadores de cv] especificadores de tipo [
&
ou&&
] [qualificadores de cv] identificador [=
expressão];
As referências são declaradas usando a seguinte sequência:
Os especificadores da declaração:
- Um especificador de classe de armazenamento opcional.
- Opcional
const
e/ouvolatile
qualificadores. - O especificador de tipo: o nome de um tipo.
O declarador:
Um modificador opcional específico da Microsoft. Para obter mais informações, consulte Modificadores específicos da Microsoft.
O operador
&
ou operador&&
.Opcional
const
e/ouvolatile
qualificadores.O identificador.
Um inicializador opcional.
Os formatos mais complexos de declaradores associados a ponteiros para matrizes e funções também se aplicam às referências a matrizes e funções. Para obter mais informações, consulte ponteiros.
Vários declaradores e inicializadores podem aparecer em uma lista separada por vírgulas após um único especificador de declaração. Por exemplo:
int &i;
int &i, &j;
As referências, os ponteiros e os objetos podem ser declarados juntos:
int &ref, *ptr, k;
Uma referência contém o endereço de um objeto, mas se comporta sintaticamente como um objeto.
No programa a seguir, observe que o nome do objeto, s
, e a referência ao objeto, SRef
, podem ser usados de forma idêntica em programas:
Exemplo
// 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
Confira também
Argumentos de função de tipo de referência
Retornos de função de tipo de referência
Referências a ponteiros
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de