태그: rvalue
6편
-
C++ 값 카테고리: lvalue, prvalue, xvalue를 구분하는 기준
C++ 표현식이 lvalue, prvalue, xvalue 중 무엇인지 구분하는 기준과, 그 결과가 어떤 참조에 바인딩될 수 있는지를 예제로 정리합니다. std::move가 실제로는 xvalue로 캐스팅할 뿐이라는 점, decltype 결과가 달라지는 규칙, 불필요한 move 실수도 다룹니다.
-
C++ 참조: lvalue·rvalue·const 참조, 참조 vs 포인터, 참조 축약 규칙
C++ 참조 정리. 큰 객체를 복사 없이 넘기는 문제에서 출발해 lvalue 참조, rvalue 참조, const 참조, 참조와 포인터의 차이, 참조 축약 규칙과 자주 나는 에러를 예제로 다룹니다.
-
C++ lvalue와 rvalue: 값 범주 구분 기준과 이름 있는 rvalue 참조가 lvalue인 이유
이름이 있고 주소를 얻을 수 있으면 lvalue라는 기준으로 값 범주를 구분하고, const 참조와 rvalue 참조가 무엇에 바인딩되는지, 이름 있는 rvalue 참조가 lvalue로 취급되는 이유, std::move와 std::forward가 여기서 하는 역할을 예제로 설명합니다.
-
C++ Move 시맨틱스: 복사와 이동의 차이, rvalue 참조, std::move
lvalue와 rvalue 구분에서 시작해 std::move가 실제로는 캐스트일 뿐인 이유, 참조 축소 규칙과 std::forward를 이용한 완벽 전달, Rule of Five와 이동 전용 타입 설계, 자기 이동 대입 처리까지 예제로 설명합니다.
-
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를 붙이는 실수와 자기 대입 검사도 다룹니다.