vector
과 같은 STL 컨테이너는 객체를 추가 할 때 객체를 복사합니다. 나는 그것이 참조로 항목을 걸리는 것을보고 놀란다STL 컨테이너는 개체를 어떻게 복사합니까?
void push_back (const T& x);
: 같은 push_back
방법이 보인다. 어떻게 작동하는지보기 위해 샘플 프로그램을 작성했습니다.
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
이 항목을 참조로 사용하는 경우 복사 생성자를 호출하는 방법입니다. 아니면 여기에 뭔가 빠졌나요?
모든 의견 ..?
T에 매개 변수없는 생성자가 있으면 정상입니다. 그러나 매개 변수화 된 생성자가있을 때 어떤 일이 발생합니까? 벡터가 새로운 객체를 초기화하는 방법은 무엇입니까? –
T가 _copy 생성자 _을 가지고 있으면 괜찮습니다. 명시 적으로 "private"또는 "protected"가 아닌 한 기본적으로, 그리고 구현하면됩니다. – Thomas
명확하게 대답을 편집했습니다. – Thomas