Compartir a través de


Objetos temporales

en algunos casos, es necesario que el compilador cree objetos temporales.estos objetos temporales se pueden crear por las razones siguientes:

  • Para inicializar una referencia de const con un inicializador de un tipo diferente del tipo de referencia que se inicializa.

  • para almacenar el valor devuelto de una función que devuelve un tipo definido por el usuario.Se crean estos temporaries sólo si el programa no copia el valor devuelto a un objeto.Por ejemplo:

    UDT Func1();    //  Declare a function that returns a user-defined
                    //   type.
    
    ...
    
    Func1();        //  Call Func1, but discard return value.
                    //  A temporary object is created to store the return
                    //   value.
    

    Dado que el valor devuelto no se copia en otro objeto, se crea un objeto temporal.Un caso más común donde se crean los temporaries es durante la evaluación de una expresión donde las funciones sobrecargadas de operador deben llamar.Estas funciones sobrecargadas de operador devuelven un tipo definido por el usuario que no se copie a otro objeto.

    considere la expresión ComplexResult = Complex1 + Complex2 + Complex3.La expresión se evalúa Complex1 + Complex2 , y el resultado se almacena en un objeto temporal.Se evalúa el Siguiente, la expresión temporal + Complex3 , y el resultado se copia en ComplexResult (suponiendo que el operador de asignación no se sobrecarga).

  • para almacenar el resultado de una conversión a un tipo definido por el usuario.Cuando un objeto de un tipo determinado explícitamente se convierte en un tipo definido por el usuario, este nuevo objeto se crea como objeto temporal.

Los objetos temporales tienen una duración definido por el punto de la creación y el punto en que se destruye.Cualquier expresión que cree más de un objeto temporal los destruye finalmente en el orden inverso en que se crearon.Puntos en los que la destrucción aparece en la tabla siguiente se muestran.

Puntos de destrucción de objetos temporales

temporal de la razón creado

Punto de destrucción

resultado de la evaluación de la expresión

Todos los temporaries creados como resultado de la evaluación de la expresión se destruyen al final de la instrucción de la expresión (es decir, en el punto y coma), o al final de las expresiones que controlan para for, if, while, do, e instrucciones de switch .

Referencias de const inicializar

Si un inicializador no es un valor l del mismo tipo que la referencia que se inicializa, un temporal del tipo de objeto subyacente se crea y se inicializa con la expresión de inicialización.Se destruye este objeto temporal inmediatamente después de que se destruye el objeto de referencia al que está enlazado.

Vea también

Referencia

El miembro especial funciona (C++)