- [Modern C++ 정리] Temporary 22022년 09월 05일
- starryeye
- 작성자
- 2022.09.05.:55
계속하여 temporary에 대해 알아보자.
temporary의 특징
Point 클래스를 선언하였다.
생성자 / 소멸자에서 호출 여부 출력용 로그를 작성하였다.
main() 함수에서..
이름 있는 객체 pt를 선언하였다.
이름 있는 객체는 lvalue로 사용 가능하다. (22 line)
임시 객체는 rvalue로 부를 수 있으며,
등호의 왼쪽에 올 수 없다. (23 line)
하지만, 임시 객체가 상수는 아니다. (26 line)
따라서, 함수 호출은 된다.
main() 함수의 연속이다.
이름있는 객체 pt의 주소를 p1에 복사 대입 해주었다.
Point(1, 2) 임시객체의 주소를 p2에 복사 대입 해주기를 시도 한다.
하지만..
임시 객체는 주소 연산자로.. 주소를 구할 수 없다.
(단, Point 클래스 내부에서 this(자기 자신 참조) 사용가능)
주소 연산자도 포인터와 마찬가지이다.
이름있는 객체 pt는 가능하며..
이름없는 객체 Point(1, 2)는 참조로 가리킬 수 없다.
임시 객체를 가리킬 수 있는 2가지
main() 함수의 마지막 부분이다.
Point(1, 2) 임시객체를 const Point& 자료형의 r3로 받았다.
const Point& 는 const reference(상수 참조) 이다.
상수 참조로 임시객체를 가리킬 수 있다.
이때, 임시객체의 수명은 r3의 수명으로 바뀐다.
상수 참조는 여전히 상수 이므로..
객체 수정은 안된다. (48 line)
C++11에서는 임시 객체를 상수성 없이 가리키기를 원했다..
그래서..
&& : rvalue reference를 만들었다. (53 line)
'C++' 카테고리의 다른 글
[Modern C++ 정리] Temporary 4 (0) 2022.09.06 [Modern C++ 정리] Temporary 3 (0) 2022.09.06 [Modern C++ 정리] Temporary 1 (0) 2022.09.05 [C++] template (0) 2022.08.14 [Effective Modern C++] 항목 8 (0) 2022.08.14 다음글이전글이전 글이 없습니다.댓글