<div><span style="line-height:14.3999996185303px;font-size:9pt;">원래교재에는 레퍼런스 타입인 Person(const Person& i)으로 나와있는데</span> 읽다가 보니까 아래의 코드가 무한루프에 빠진다고 하는데 다행?히도 컴파일러가 막아주어서 무한루프에 빠지지 않는다고 하는데...</div> <div>근데 저는 왜 이 코드가 무한루프에 빠지는지 알고 싶은데요.</div> <div>왜 무한루프에 빠지나요? </div> <div>생각해보면 Person형의 객체 obj3가 생성되면서 생성자에 obj2객체가 대입되면 <span style="line-height:14.3999996185303px;">"Person(const Person i)호출"이 표시되는데</span></div> <div>그 이후 어떻게 무한루프가 되나요?</div> <div>무한루프가 되려면 cout실행 이전에 생성자에 obj2를 대입할때마다 계속해서 Person 객체가 생<span style="font-size:9pt;line-height:1.5;">성되어서 무한루프가 된다는 이야기인거 같은데</span></div> <div><span style="font-size:9pt;line-height:1.5;">그게 어떻게 가능한가요?</span></div> <div><span style="font-size:9pt;line-height:1.5;">obj3객체가 만들어지면서 obj2가 cout에 대입되니까 그냥 cout이 출력만 되고 끝나는 거 아닌가요?</span></div> <div><span style="font-size:9pt;line-height:1.5;">아님 다른 방법으로 무한루프에 빠지는 건가요?</span></div> <div><span style="font-size:9pt;line-height:1.5;">이 코드가 어떻게 무한루프가 가능하게 되는지 알고 싶네요.</span></div> <div><br></div> <div>#include <iostream></div> <div>using std::cout;</div> <div>using std::endl;</div> <div>using std::cin;</div> <div><br></div> <div>class Person</div> <div>{</div> <div>public:</div> <div> Person(){</div> <div> cout<<"Person()호출"<<endl;</div> <div> }</div> <div> Person(int i){</div> <div> cout<<"Person(int i)호출"<<endl;</div> <div> }</div> <div> Person(const Person i)</div> <div> {</div> <div> cout<<"Person(const Person i)호출"<<endl;</div> <div> }</div> <div>};</div> <div><br></div> <div>int main()</div> <div>{</div> <div> Person obj1;</div> <div> Person obj2(10);</div> <div> Person obj3(obj2);</div> <div>}</div> <div><br></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.