move constructor와 move assignment operator를 정의
move constructor를 정의
- move constructor
- move assignment operator
move constructor의 경우moved-to-obj의 리소스를 해제하고 그 자리에 move-from-obj의 리소스를 배정. move-from-obj의 리소스 참조를 끊어줌.(ex. pointer를 nullptr로 변경)
move-to-obj와 move-from-obj가 동일한 객체인지 검사하고 동일하지 않은 객체일 경우 이동 작업을 진행.
코드의 간략화
move assignment operator를 이용해 move constructor의 중복 코드를 제거할 수 있음.
기타
- move constructor의 move-from-obj destruct
일반적으로, move constructor에서 move-from-obj를 destruct 해주지는 않음. 그러나 move constructor가 불린 후 꼭 move destructor가 뒤따라 불리는데, 이건 move constructor가 move-from-obj를 destruct해서가 아니라 함수에서 임시로 생성됐던 객체가 move constructor가 불린 후 life time이 끝나 해제가 된 것. move constructor에서 move-from-obj의 destruct해야할 어떤 책임도 없음.
rvalue를 param.로 받는 함수를 overloading.
perfect forwarding?
references
- 이동 생성자 및 이동 할당 연산자(C++) |MSDN
- Move constructor not calling destructor? |stackoverflow
- ---
- c++ move semantic |google search
- why is the destructor call after the std::move necessary? |stackoverflow
- c++11 Return value optimization or move? |stackoverflow
- Move semantics and rvalue references in C++11
- Move Constructor
- C++11 Tutorial: Introducing the Move Constructor and the Move Assignment Operator
댓글 없음:
댓글 쓰기