Avatar ·

¿Qué es copy elision y optimización del valor de retorno (RVO) en C++?

¡Hola a todos! Estoy aprendiendo C++ y me encontré con los términos "copy elision" y "return value optimization" (RVO). Honestamente, no entiendo del todo qué son y para qué sirven. Tengo una clase simple que hace algo en el constructor y destructor: ```cpp #include class MyClass { public: MyClass() { std::cout << "Constructor\n"; } MyClass(const MyClass&) { std::cout << "Copy constructor\n"; } ~MyClass() { std::cout << "Destructor\n"; } }; MyClass createObject() { MyClass obj; return obj; // ¿Aquí ocurre una copia? } int main() { MyClass result = createObject(); return 0; } ``` Cuando ejecuto este código, espero ver: "Constructor", luego "Copy constructor" (al retornar de la función), luego otra vez "Copy constructor" (al asignar result), y luego dos destructores. Pero en la práctica solo veo "Constructor" y "Destructor". ¿Por qué el compilador omite las llamadas al copy constructor? ¿Esto es copy elision?