본문 바로가기

Cpp

move

move 는 rvalue 캐스팅해주는 함수이다.

객체를 인자로 전달하면 rvalue 로 캐스팅 해준다.

 

std::vector<std::string> v;
std::string str = "aaa";
v.push_back(std::move(str));  
str.clear();

 

위와 같은 상황에서 str 은 move 에 의해 rvalue 로 캐스팅되어진다.

v 에 push 되는 객체는 str 이 가리키는 메모리를 받고 str 은 nullptr 이 할당된다.

따라서 str 은 요소와 관련한 함수를 호출 할 수 없지만 clear 할 수 있다.

 

 

복사와 이동 차이

복사의 경우 복사가 되어질 근본 변수가 유지된다.

이동의 경우 근본 변수가 사용되어지지 않는다는 가정이 있을 경우 사용되며 이동 후 nullptr 된다.

이동은 기존 변수의 소유권이 사라진다는 의미이며 얕은 복사를 통해 더 빠르고 적은 메모리로 

객체의 생성 및 대입이 가능하다.

'Cpp' 카테고리의 다른 글

래퍼 함수  (0) 2024.04.22
push_back, emplace_back  (0) 2024.04.02
클래스의 기본 메소드 6가지 정리  (0) 2024.04.02
템플릿(template)  (0) 2023.06.20
콜백 함수  (0) 2023.06.19