Preservar valores R con referencias constantes: A C Puzzle
En C, se permite pasar valores R (objetos temporales) mediante referencia constante, a diferencia de las referencias normales . Considere el siguiente programa:
void display(const int& a) { cout El programa permite pasar valores l y r a la función de visualización, aunque la referencia esté marcada como constante. Este comportamiento es desconcertante, ya que las referencias constantes generalmente se asocian con la preservación de valores l.
La extensión de duración de la referencia constante
La clave para comprender este comportamiento radica en la semántica de referencias constantes en C . Una referencia constante prolonga la vida útil del objeto referido hasta el final del alcance que lo contiene. En el caso de un rvalue, esto evita efectivamente la destrucción del objeto temporal hasta que la referencia constante salga del alcance.
Ejemplo: prolongar la vida útil de Rvalue
En nuestro Por ejemplo, ocurre lo siguiente cuando se llama a display(5):
- Se crea un rvalue de tipo int con el valor 5.
- Una referencia constante a está vinculada a este rvalue.
- La referencia constante prolonga la vida útil del rvalue hasta el final de la función de visualización.
- El rvalue es utilizado dentro de la función para imprimir el valor 5.
- Cuando la función de visualización regresa, la referencia constante sale del alcance y el valor r finalmente es destruido.
Esto demuestra cómo una referencia constante puede seguir apuntando a un valor r, permitiéndole seguir existiendo aunque, de lo contrario, se destruiría inmediatamente.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3