En la programación genérica libro y el TEL (edición china), que dice:constructor o constructor de copia?
X x = X()
llamará al constructor de copia.
Parece un poco raro para mí. Y escribo un programa de prueba de este tipo
#include <iostream>
class Test {
public:
Test() {
std::cout << "This is ctor\n";
}
Test(const Test&) {
std::cout << "This is copy-ctor\n";
}
};
int main(int argc, char** argv)
{
Test t = Test();
return 0;
}
La salida es "Se trata de Héctor". ok, ahora estoy confundido, ¿qué es correcto?
En gcc, puede que tenga que usar '-fno-elide-constructors', ya que incluso' -O0' no evita la elisión, creo. –
@Kerrek: ¡Gracias! –
La copia puede elide incluso cuando no es * trivial *, la copia se elimina al construir el temporal en lugar de la variable local. La complejidad del objeto o la copia es irrelevante para esa optimización. –