2010-12-28 6 views
1

이 가능한 중복 : copy_from_me은 다음과 같이 전달되지 않습니다 - -복사 생성자 의심

다음은 원인 무효 복사 생성자 (이다
Why should the copy constructor accept its parameter by reference in C++?

위키 피 디아에서

, 언급한다 참조 번호) :

X (X copy_from_me); 
X (const X copy_from_me); 

이기 때문에 이러한 생성자를 호출해도 복사본이 필요하므로 무한 재귀 호출이 발생합니다.

무한 재귀 호출이 발생할 수있는 방법을 설명해주세요.

감사합니다.

+1

[복제 생성자가 C++에서 참조로 매개 변수를 받아 들여야하는 이유는 무엇입니까?] (http://stackoverflow.com/questions/2685854/why-should-the-copy-constructor-accept-its-parameter-by -reference-in-c) –

+0

@James McNellis 링크를 제공해 주셔서 감사합니다. – Mahesh

답변

4

두 복사본 생성자는 모두 값을 사용합니다. 값에 의한 전달이 사용되면 인수는 사본이어야합니다. 이 복사본은 복사 생성자를 호출하여 만들어집니다. 복사 생성자를 호출하려면 값을 전달해야합니다. 즉, 복사 생성자를 호출해야한다는 인수를 복사해야합니다. .....

2

개체를 값으로 받아들이는 함수를 호출하려면 해당 값의 복사본을 만들어서 함수의 스택. 문제의 함수는 그 객체의 사본을 생성하는 방법이기 때문에 함수는 호출 된 것에 대한 응답으로 그 자체로 호출됩니다.

+0

's/stack/automatic storage /;'-> +1 –