- [Modern C++ 정리] Temporary 62022년 09월 06일
- starryeye
- 작성자
- 2022.09.06.오후11:29
이번엔 캐스팅과 관련된 temporary를 알아보자.
Base 클래스는 부모 클래스
Derived 클래스는 자식 클래스로 사용되고 있다.
부모, 자식 클래스 모두 value라는 맴버 변수를 선언하였다.
main() 함수를 보자..
Derived 클래스(자식 클래스)의 지역 변수 객체 d를 선언하였다.
d.value는 당연하게도 20이 출력된다.
25 line에서는
d를 Base&로 타입 캐스팅 하였다.
27 line에서는
d를 Base로 타입 캐스팅 하였다.
여기서..
지난번 temporary가 반환 될때의 포스팅에서와 동일하게..
d가 Base 타입의 임시객체로 복사되어 만들어진다.
그리고 생성된 임시객체의 value를 출력하게 된다.
27 line이 임시객체가 만들어진 증명은
34 line에서 보여주고 있다.
임시 객체는 등호 왼쪽에 위치 할 수 없다.
마지막으로 임시객체에 대해 한번 정리 해보자..
<결론>
임시 객체는 ...
1. 개발자가 의도적으로 만든다.
-> 주로.. 함수 인자 f1(Point(1, 2)) 로 사용함
2. 값 타입으로 반환하는 함수, 값 타입으로 캐스팅 등을 할 때 생성된다.
-> 임시 객체의 생성/파괴 가 이루어지므로 성능저하의 원인이 될 수 있다.
-> 생각지도 못한 로직이 될 수도 있다. (Temporary5 포스팅의 Counter 객체 참조)
'C++' 카테고리의 다른 글
[Modern C++ 정리] Move 2 (0) 2022.09.08 [Modern C++ 정리] Move 1 (0) 2022.09.07 [Modern C++ 정리] Temporary 5 (0) 2022.09.06 [Modern C++ 정리] Temporary 4 (0) 2022.09.06 [Modern C++ 정리] Temporary 3 (0) 2022.09.06 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)