Sé que los contenedores STL como vector
copian el objeto cuando se agrega. push_back
método se parece a:¿Cómo copian los objetos STL los contenedores?
void push_back (const T& x);
me sorprende ver que se necesita el artículo como referencia . Escribí un programa de muestra para ver cómo funciona.
struct Foo
{
Foo()
{
std::cout << "Inside Foo constructor" << std::endl;
}
Foo(const Foo& f)
{
std::cout << "inside copy constructor" << std::endl;
}
};
Foo f;
std::vector<Foo> foos;
foos.push_back(f);
Esto copia el objeto y puedo ver que está llamando constructor copia.
Mi pregunta es, cuando el push_back
toma de artículo como referencia, la forma en que está llamando al constructor de copia? ¿O me estoy perdiendo algo aquí?
¿Alguna idea ...?
Esto está bien cuando T tiene un constructor sin parámetros. Pero, ¿qué pasará cuando tenga un constructor parametrizado? ¿Cómo el vector puede inicializar un nuevo objeto? –
Esto está bien cuando T tiene un _copy constructor_. Que es lo que hace, por defecto, y si lo implementa, a menos que explícitamente lo haga 'private' o' protected'. – Thomas
Edité mi respuesta para aclarar. – Thomas