zona ser sentir pueden mismo mapa madrid los horario gemelos azul c++

c++ - ser - zona azul madrid mapa



¿Por qué se llama al constructor solo una vez? (2)

Se llama una vez desde la línea

vector<A> v(5,A(1));

llamará al constructor y la línea se convertirá en el vector v (5, X);

donde X es el objeto construido después de llamar al constructor.

Después de eso, se usa el constructor de copia.

Prueba agregar

A(const &A);

A la declaración de clase para verificar esto.

Considere el siguiente programa:

class A { public: A(int i) { cout<<"Called"<<endl; } }; int main() { vector<A> v(5,A(1)); return 0; }

Obtengo el resultado: http://ideone.com/81XO6

Called

¿Por qué el constructor recibe una llamada solo una vez, incluso si estamos construyendo 5 objetos?
¿Cómo el vector es manejado internamente por el compilador?


Tu clase tiene dos constructores y solo estás viendo uno de ellos. std::vector crea sus elementos mediante la construcción de copias desde el elemento original que proporcionó. Para ese propósito, el constructor de copias de la clase A se llama 5 veces en su ejemplo.

El constructor de copias para A en su ejemplo está implícitamente declarado y definido por el compilador. Si lo desea, puede declararlo y definirlo usted mismo. Si imprime algo de él, verá que se llama al menos 5 veces.