Al inicializar un vector de la siguiente manera:C++ ¿Por qué vector de inicialización llama al constructor de copia
std::vector<MyClass> MyVec(10);
Se llama al constructor por defecto una vez y luego llama al constructor de copia otros 10 veces más. Entonces, si lo entiendo correctamente, los objetos en el vector son todos hechos por el constructor de copia.
¿Alguien puede explicar el motivo de llamar al constructor de copia y no al predeterminado? ¿O simplemente asignando la memoria sin los objetos?
RE asignando memoria sin construir el objeto: Entonces no puedes usarlo. Incluso el operador de asignación puede requerir algo que los constructores establezcan. Por supuesto, solo reservar podría tener sentido, pero tendría una semántica muy diferente. – delnan
[Mi prueba] (http://liveworkspace.org/code/b831cffa5df38a6b12c8a637de815573) muestra el constructor predeterminado que se llama diez veces. – chris
Este comportamiento ha cambiado en C++ 11, donde es posible la inicialización de valores de cada miembro. –