- [Modern C++ 정리] Move 22022년 09월 08일
- starryeye
- 작성자
- 2022.09.08.오후08:40
지난 Move 1 포스팅에서는..
임시 객체(rvalue)를 가리킬 수 있는 rvalue reference
lvalue를 가리킬 수 있는 lvalue reference
rvalue, lvalue 둘다 가리킬 수 있는 const lvalue reference
에 대하여 알아보았다.
조금더 확장하여..
함수 파라미터 관점에서 동일하게 알아보자.
Point 구조체이다.
위 코드 처럼 함수 오버로딩이 가능하다.
1번 함수는 Point 구조체를 lvalue reference로 lvalue를 받을 수 있도록 하였다.
2번 함수는 const lvalue reference로 lvalue, rvalue 모두 받을 수 있도록 하였다. (상수성)
3번 함수는 rvalue reference로 rvalue를 받을 수 있도록 하였다.
4번 함수는 const rvalue reference로 rvalue를 받을 수 있도록 하였다. (상수성)
위 정의된 오버로딩 함수(1 ~ 4번)의 호출 우선순위를 알아보자.
main() 함수 이다.
pt라는 이름 있는 lvalue Point 지역 객체를 생성하였다. (19 line)
20 line에서는 lvalue를 넘겼는데..
우선순위에 따라..
1번 함수가 호출 된다.
23 line에서는 Point 임시 객체(rvalue)를 생성하여 넘기고있다.
그래서 우선순위에 따라..
3번 함수가 호출 된다.
26 line에서는 임시 객체(rvalue)를 생성 하고 const rvalue reference로 캐스팅하여 넘기고 있다.
그래서 4번이 호출된다.
<참고>
이전 포스팅과 동일하게..
rvalue와 lvalue 둘다 받고 싶은 함수 하나만 생성한다면..
const lvalue reference 로 파라미터를 만들어 정의하면 된다.
하지만.. 상수성이긴 하다..
'C++' 카테고리의 다른 글
[Modern C++ 정리] Move 4 (0) 2022.09.08 [Modern C++ 정리] Move 3 (0) 2022.09.08 [Modern C++ 정리] Move 1 (0) 2022.09.07 [Modern C++ 정리] Temporary 6 (0) 2022.09.06 [Modern C++ 정리] Temporary 5 (0) 2022.09.06 다음글이전글이전 글이 없습니다.댓글