Referencias (C++)
Una referencia (por ejemplo, un puntero) almacena la dirección de un objeto que se encuentra en otra parte de la memoria. A diferencia de un puntero, una referencia inicializada no puede hacer referencia a otro objeto ni establecerse en null. Hay dos tipos de referencias: referencias lvalue, que hacen referencia a una variable con nombre, y referencias rvalue, que hacen referencia a un objeto temporal. El operador &
significa una referencia lvalue, mientras que el operador &&
significa una referencia rvalue o una referencia universal (lvalue o rvalue) según el contexto.
Las referencias se pueden declarar con la sintaxis siguiente:
[especificadores de clase de almacenamiento] [calificadores cv] especificadores de tipos [modificador de ms] declarador [
=
expresión];
Se puede usar cualquier declarador válido que especifique una referencia. A menos que la referencia sea una referencia a un tipo de función o matriz, se aplica la siguiente sintaxis simplificada:
[especificadores de clase de almacenamiento] [calificadores cv] especificadores de tipos [
&
o&&
] [calificadores cv] identificador [=
expresión];
Las referencias se declaran mediante la siguiente secuencia:
Los especificadores de la declaración:
- Un especificador de clase de almacenamiento opcional.
- Calificadores
const
yvolatile
opcionales. - El especificador de tipo: el nombre de un tipo.
El declarador:
Modificador opcional concreto de Microsoft. Para obtener más información, consulte Modificadores específicos de Microsoft.
El operador
&
o el operador&&
.Calificadores
const
y/ovolatile
opcionales.El identificador.
Un inicializador opcional.
Las formas de declarador más complejas para punteros a matrices y funciones también se aplican a las referencias a matrices y funciones. Para más información, consulte punteros .
Varios declaradores e inicializadores pueden aparecer en una lista separada por comas detrás de un único especificador de declaración. Por ejemplo:
int &i;
int &i, &j;
Las referencias, punteros y objetos se pueden declarar juntos:
int &ref, *ptr, k;
Una referencia contiene la dirección de un objeto, pero se comporta sintácticamente como un objeto.
Observe que, en el siguiente programa, el nombre del objeto s
y la referencia al objeto, SRef
, se pueden usar de la misma forma:
Ejemplo
// 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
Vea también
Argumentos de función de tipo de referencia
Valores devueltos de función de tipo de referencia
Referencias a punteros
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de