Objetos temporales : en programación, objetos que el compilador crea automáticamente durante la evaluación de expresiones . Dichos objetos no tienen nombre y se destruyen tan pronto como ya no se necesitan.
El lenguaje C++ llama a los constructores (según sea necesario) y a los destructores (después de ejecutar la expresión). Esto es importante para el objeto string_view C++17 , por ejemplo .
Cuando se inicializan las matrices de C++, el objeto temporal desaparece antes de que se inicialice el siguiente elemento.
Este código funciona así ( ctor -constructor , -destructor ) . dtor
cadena r , tmp1 , tmp2 , tmp3 ; tmp1 . ctor ( "1" ); tmp2 . ctor (); tmp2 = tmp1 + "2" ; tmp3 . ctor (); tmp3 = tmp2 + "3" ; r _ ctor ( tmp3 ); tmp3 . dtor (); tmp2 . dtor (); tmp1 . dtor ();C ++ garantiza que la cadena temporal se destruirá más tarde que aquellos que la "parasitan", se "materializan" en otra cadena igualmente temporal . expandFileName(someFile)wstring_viewstd::wstring(...)
Casi todos los lenguajes (excepto los de más bajo nivel) son capaces de crear automáticamente variables temporales para resultados intermedios de tipos simples ( entero , fraccionario , apuntador ). Muchos lenguajes ( Pascal ) tienen un sistema similar para cadenas . Casi todos los lenguajes de programación recolectados en la basura ( C # , Java ) producen resultados intermedios de cualquier tipo; después de todo, para ellos no hay diferencia entre un objeto permanente y uno temporal. Solo C ++ puede crear automáticamente objetos intermedios de tipos arbitrarios llamando a su constructor y destructor.