태그: std::move
3편
-
C++ use-after-move 버그: std::move가 캐스팅일 뿐인 이유와 이동 의미론 실수 10가지
std::move는 캐스팅일 뿐이라는 사실에서 출발해 이동된 객체를 다시 쓰는 use-after-move 버그, const 객체 이동, return에 std::move를 붙여 RVO를 막는 실수 등 이동 의미론 에러 10가지와 고치는 방법을 다룹니다.
-
C++ Move Semantics | std::move로 불필요한 복사 제거하고 성능 최적화
큰 vector를 반환할 때의 복사 비용에서 출발해 lvalue·rvalue 구분, rvalue 참조, 이동 생성자와 이동 대입, Rule of Five를 예제로 구현합니다. return std::move가 RVO를 막는 경우, noexcept 누락, const 객체에 move를 거는 실수도 다룹니다.
-
C++ 얕은 복사 vs 깊은 복사, 그리고 이동 의미론(Move Semantics)
면접에서 이동 의미론이 왜 필요하냐는 질문에 답할 수 있도록 얕은 복사와 깊은 복사의 차이, Rule of Three·Five, copy-and-swap 관용구를 예제로 짚습니다. rvalue 참조와 std::move, 완벽 전달, 반환값에 move를 붙이는 실수와 자기 대입 검사도 다룹니다.