Я знаю, что контейнеры STL, такие как vector
, копируют объект при его добавлении. push_back
метод выглядит следующим образом:
void push_back ( const T& x );
Я удивлен, увидев, что этот предмет занимает позицию. Я написал пример программы, чтобы увидеть, как она работает.
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);
Это копирует объект, и я вижу, что он вызывает экземпляр-конструктор.
Мой вопрос: когда push_back
принимает элемент в качестве ссылки, как он вызывает экземпляр-конструктор? Или я здесь что-то не хватает?
Любые мысли..?