Bonjour, prenons le code suivant:
L'ouput donne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include <iostream> #include <vector> #include <string> using namespace std; struct Foo { Foo( const string & name = "unknown" ) : name( name ) { cout << "ctor" << endl; } Foo( const Foo & other ) : name( other.name ) { cout << "copy ctor" << endl; } Foo & operator = ( const Foo & other ) { name = other.name; cout << "operator =" << endl; } string name; }; main() { vector< Foo > v; v.push_back( Foo() ); getchar(); }Ce qui signifie que le constructeur de copie de Foo est appelé lors du push_back.ctor
copy ctor
Pourquoi fait-il cette copie? Comment l'éviter (étant entendu que l'on ne connait pas à l'avance le nombre d'éléments que l'on va mettre dans le vecteur)?
Partager