Quando si inizializza un vettore nel modo seguente:C++ Perché vettore di inizializzazione chiama il costruttore di copia
std::vector<MyClass> MyVec(10);
Si chiama il costruttore di default una volta e poi chiama il costruttore di copia un ulteriore 10 volte. Quindi, se ho capito bene, gli oggetti nel vettore sono tutti realizzati dal costruttore di copie.
Qualcuno può spiegare il motivo della chiamata del costruttore di copie e non di quello predefinito? O anche solo l'assegnazione della memoria senza gli oggetti?
RE allocare memoria senza costruire oggetti: quindi non è possibile utilizzarlo. Anche l'operatore di assegnazione può richiedere qualcosa che i costruttori stabiliscono. Certo, solo prenotare potrebbe avere senso, ma avrebbe una semantica molto diversa. – delnan
[My test] (http://liveworkspace.org/code/b831cffa5df38a6b12c8a637de815573) mostra il costruttore predefinito chiamato dieci volte. – chris
Questo comportamento è cambiato in C++ 11, dove è possibile l'inizializzazione del valore di ogni membro. –