인프런 커뮤니티 질문&답변

ksi0911님의 프로필 이미지
ksi0911

작성한 질문수

홍정모의 따라하며 배우는 C++

9.9 복사 생성자, 복사 초기화 반환값 최적화

Fraction doSomething() 과 Fraction & doSomething 차이

해결된 질문

작성

·

257

1

안녕하세요? 교수님 디버깅 하는중에 doSomething() 함수 호출 과정에서 의문이 생겨서 질문 드립니다.

1.  Fraction  doSomething() 

이 함수에서 호출 했을 때, copy constructor을 호출 하는 시점이 return temp 에서 발생했습니다. 

2.  Fraction &  doSomething()

이 (& 반환)함수에서   copy constructor 호출이 

Fraction result = doSomething()에서 반환 했습니다.

 

두 함수다 두 번째 사진 처럼 copy constructor가 발생 되어야 한다고 생각했습니다.

첫 번째 사진에서 return temp시점에서 copy constructor을 호출하는 이유가 이해되지 않아서 질문드립니다.  

답변 2

2

ksi0911님의 프로필 이미지
ksi0911
질문자

먼저 답변 주셔서 감사드립니다.

그렇게 생각한 이유는 (첫번째 사진) doSomething() 함수에서 Fraction temp 객체를 바로 넘겨준다고 생각했습니다. (단순히 값을 보내준다고 생각). 

임시적으로 객체를 생성해서 보내주는 군요. 답변주셔서 이해가 됬습니다. 감사합니다. 

1

안녕하세요? 왜 그렇게 생각하시는지 알 것 같기도 하면서 이유가 궁금하네요.
일단 답변을 드리면 첫번째 경우와 같이 값을 return 하는 경우는 객체를 하나 만들어서 보내주어야하기 때문입니다.

ksi0911님의 프로필 이미지
ksi0911

작성한 질문수

질문하기