Home Forums US Life 간단한 시뿔뿔 문제 간단한 시뿔뿔 문제 Name * Password * Email 한단계 높여서, 다음의 예의 경우는 더 흥미롭군요. 테스트 5: #include<iostream> using namespace std; class Test { public: Test(Test &t) { } Test() { } }; Test hi() { cout << "hi() Called\n"; Test t; return t; } int main() { Test t1; Test t2 = hi(); t1 = hi(); return 0; } 테스트 6: #include<iostream> using namespace std; class Test { public: Test(Test &t) { } Test() { } }; Test& hi() { cout << "hi() Called\n"; Test t; return t; } int main() { Test t1; Test t2 = hi(); t1 = hi(); return 0; } 이경우는 테스트5번은 컴파일 에러가 나고 테스트 6번은 실행됩니다. Test& hi() 에 &가 있느냐 없느냐의 차이인데, 원글의 테스트와는 달리 &가 있어야 실행되고 없으면 에러가 나는 케이스입니다. 와, 진짜 제대로 이해를 하지 못하면 상당히 헷갈릴수밖에 없지요? 이 경우는 아마 디폴트 컨스트럭터와 카피컨스트럭터의 미묘한 차이가 이런 결과를 만들어 내는거 같네요. 테스트6의 경우 함수반환값으로 템포러리 오브젝트 레퍼런스가 리턴되는데 이게 카피 컨스트럭터에서 lvalue 와 rvalue 가 둘다 Test& 라서 카피가 문제없이 실행 되었을까? 와, 헷갈린다. 물론 두 테스트 모두 Test(const Test &t){ } 라고 해주면 모두 에러없이 실행된다. I agree to the terms of service Comment