Compartir a través de


Referencias inicializar

Las variables de tipo de referencia se deben inicializar con un objeto de tipo del tipo de referencia es derivado, o a un objeto de un tipo que se pueda convertir al tipo del tipo de referencia es derivado.Por ejemplo:

// initializing_references.cpp
int iVar;
long lVar;
int main() {
   long& LongRef1 = lVar;   // No conversion required.
   long& LongRef2 = iVar;   // C2440
   const long& LongRef3 = iVar;   // OK
   LongRef1 = 23L;   // Change lVar through a reference.
   LongRef2 = 11L;   // Change iVar through a reference.
   LongRef3 = 11L;   // C3892
}

La única manera de inicializar una referencia a un objeto temporal es inicializar un objeto temporal constante.Una vez inicializado, puntos de una variable de tipo de referencia siempre al mismo objeto; no puede cambiarse para señalar a otro objeto.

Aunque la sintaxis puede ser igual, la inicialización de las variables de tipo de referencia y asignar a las variables de tipo de referencia son semánticamente diferentes.En el ejemplo anterior, las asignaciones que cambian iVar y lVar es similar a las inicializaciones, pero tienen efectos diferentes.Inicialización especifica el objeto al que los puntos variables de tipo de referencia; las asignaciones de asignación al objeto denominado con referencia.

Dado que pasar un argumento de tipo de referencia a una función y devolver un valor de tipo de referencia de una función son inicializaciones, los argumentos formales a una función se inicializan correctamente, así como las referencias devueltas.

Las variables de tipo de referencia se pueden declarar sin inicializadores sólo lo siguiente:

  • declaraciones de función (prototipos).Por ejemplo:

    int func( int& );
    
  • declaraciones de tipos de Función-retorno.Por ejemplo:

    int& func( int& );
    
  • Declaración de miembro de clase de tipo de referencia.Por ejemplo:

    class c {
    public:
       int& i;
    };
    
  • Declaración de una variable especificada explícitamente como extern.Por ejemplo:

    extern int& iVal;
    

Al inicializar una variable de tipo de referencia, el compilador usa el gráfico de decisión que se muestra en la figura siguiente para seleccionar entre crear una referencia a un objeto o crear un objeto temporal al que señala la referencia.

Decisión Gráfico para la inicialización de tipos de referencia

Tipos de referencia de inicialización de gráficos de decisión

Las referenciasvolatile a tipos (declarados comovolatile identificador de typename&) se pueden inicializar convolatile los objetos del mismo tipo o con los objetos que no se han declarado comovolatile.No pueden, sin embargo, inicializar con objetos de const de ese tipo.De igual forma, las referencias a tipos const (declarados como identificador  de typename**&**  const) se pueden inicializar con objetos const del mismo tipo (o nada que tienen una conversión a ese tipo o con los objetos que no se han declarado como const).No pueden, sin embargo, inicializar con objetos de volatile de ese tipo.

Las referencias que no se califican con const o la palabra clave de volatile sólo se pueden inicializar con objetos declarados como ni const ni volatile.

Vea también

Referencia

Inicializadores