move함수는 lvalue를 rvalue로 전환시켜주는 함수다.
A a;
A b(std::move(a)); // rvalue 생성자(이동 생성자) 호출!
A c = std::move(a); // 이동 대입 연산자 실행
일반적인 참조로 구현되는 복사 생성자의 경우는 일반적으로 깊은 복사(deep copy)를 수행하는 경우가 많다. 하지만 복사를 빠르게 진행하고 싶은 경우, std::move 함수를 활용해서 lvalue를 rvalue로 전환 후 이동 생성자/이동 대입 연산자를 호출할 수 있다.
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 11 / 스마트 포인터 unique_ptr (0) | 2023.02.15 |
---|---|
C++ 11 / 보편적 참조(universal reference)와 forward (0) | 2023.02.15 |
C++ 11 / Rvalue 참조 (0) | 2023.02.15 |
C++ 문법 / 예외 (0) | 2023.02.15 |
STL 알고리즘 / find, find_if, any_of, all_of (0) | 2023.02.14 |
댓글