inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

C개발자를 위한 최소한의 C++

임시 객체와 보이지 않는 복사 생성

반환유형이 클래스형 참조

해결된 질문

237

작성자 없음

작성한 질문수 0

0

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

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

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

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

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

 

감사합니다!

c++ microsoft-windows 객체지향 디자인-패턴

답변 1

0

널널한 개발자

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

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

인터페이스 상속과 추상 자료형 2:00 질문

0

50

1

13분 42초의 예제

0

52

2

네임스페이스 스코프 내에서 정의된 변수, 함수들이 위치하는 곳 질문

0

47

1

소멸자 가상함수 질문

0

55

2

이동생성자의 매개변수로 넘어가는 임시객체의 값 유지 관련하여 질문이 있습니다.

0

63

2

임시 객체 복사 생성자 질문드립니다

0

66

2

변수 바인딩에 대한 의문점

0

113

1

C++ 파일 구조 질문

0

128

1

빈 포인터에 멤버함수 호출

0

104

1

파생클래스에서 virtual함수를 선언에 대한 질문입니다.

0

116

2

순수 가상 클래스 선언과 일반 인트 변수의 선언과 다른가요?

0

137

2

안녕하세요. 이동의미론에 대해 제가 잘 이해했는지 궁금합니다.

0

132

1

인스턴스의 개념에 대해 int a(3), int(5) 예시를 바탕으로한 질문입니다.

0

189

2

식별자 검색 순서 관련 namespace 생략 관련 오류에 관한 질문

0

175

1

마지막 주소록 예제 c 파일 한글 깨짐 현상

0

190

1

nullprt vs null

0

153

2

쓸데없지만 질문드리고싶습니다

0

181

1

복사 생성자 질문 드립니다.

0

221

1

생성자 궁금한거 있습니다

0

218

2

단순대입 오류 발생 이유

0

235

1

네가지 형변환 강의 질문

0

283

1

CMyString Step10 강의 질문

0

174

1

임시 객체와 보이지 않는 복사 생성 강의 질문

0

268

2

섹션8 3번째 강의 (실습 프로젝트 - 문자열 필터개선) 질문

0

219

2