• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    해결됨

반환유형이 클래스형 참조

24.03.16 12:07 작성 조회수 97

0

안녕하세요 강사님, 반환 유형이 클래스 참조일 때 질문이 있습니다.

반환유형이 클래스형인 것보다는 메모리 효율을 위해서 클래스형 참조로 선언을 하는데,

반환하는 참조가 함수 내부에서 생성된 지역 인스턴스의 참조라면

함수 스코프를 벗어나면 해당 인스턴스는 소멸되므로 main함수에서는 참조를 못하게 되는 것 아닌가요?

이런 경우에는 반환 유형을 클래스형 참조가 아닌 클래스형으로 선언하는게 적절할까요?

 

감사합니다!

답변 1

답변을 작성해보세요.

0

반환형식이 클래스이건 일반 변수건 지역 변수 인스턴스에 대한 참조를 반환하는 것은 모두 부적절합니다. 그러나 예를 들어 Test 클래스의 연산자 함수(특히 대입 연산자)나 메서드에서 Test에 대한 참조를 반환하는 경우
return *this; 코드가 가능합니다.

결과적으로 반환 값을 사용해야 하는 호출자에서 소멸한 대상에 대한 잘못된 참조가 발생하지 않도록 하는 것이 핵심이라 하겠습니다. 그리고 클래스 인스턴스를 반환하는 경우 임시객체가 생성될 수 있음을 알고 있어야 합니다. 참고하시기 바랍니다. 😄