Je connais les conteneurs STL comme vector
copie l'objet lorsqu'il est ajouté. push_back
ressemble à une méthode :
void push_back ( const T& x );
Je suis surpris de voir qu'il prend l'élément comme référence . J'ai écrit un programme d'exemple pour voir comment cela fonctionne.
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);
Cela copie l'objet et je peux voir qu'il appelle copieur-constructeur .
Ma question est, quand le push_back
prend l'élément comme référence, comment appelle-t-il le constructeur de copie ? Ou est-ce que quelque chose m'échappe ici ?
Des idées ?