O que é copy elision e otimização do valor de retorno (RVO) em C++?
Olá a todos! Estou estudando C++ e me deparei com os termos "copy elision" e "return value optimization" (RVO). Sinceramente, não entendo muito bem o que são e para que servem.
Eu tenho uma classe simples que faz algo no construtor e destrutor:
```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; // Aqui ocorre cópia?
}
int main() {
MyClass result = createObject();
return 0;
}
```
Quando executo este código, espero ver: "Constructor", depois "Copy constructor" (ao retornar da função), depois novamente "Copy constructor" (ao atribuir result), e então dois destrutores. Mas na prática vejo apenas "Constructor" e "Destructor". Por que o compilador omite as chamadas do copy constructor? Isso é copy elision?
No answers yet.
Faça login para deixar uma resposta