(C++) 복사생성자 질문

canuyes의 이미지

C 를 배우고 C++를 배우는 중인 초보자입니다.

복사생정자 정의시에 복사 생성자의 매개변수를 아래의 refer1과 같이 참조형으로 해야만하는 이유가 궁급합니다.

class Example{
      private:
              int num;
      public:
              Example():num(0){}
              Example(const Example& copy):num(copy.num){} /*refer 1*/
};

학습중인 교재에는 복사생성자의 매개변수를 참조형으로 하지 않으면 무한루프에 빠져버린다고 나와있네요...
그 이유를 알려주세요 ㅠㅠ.

익명 사용자의 이미지

참조가 아닌 객체로, 즉, const Example로 할 경우 매개변수의 전달 과정에서 객체의 '복사'가 이루어지게 됩니다.
그럼 해당 객체의 복사 생성자로 타고 들어가겠죠. 어라...또 객체네요...? 이 객체를 복사하기 위해 또 복사 생성자를
타고 들어가게 되고...이후에는... 자세한 설명은 생략합니다- _-)