지식 출처

 

C++ 레퍼런스 - std::move 함수

모두의 코드 C++ 레퍼런스 - std::move 함수 작성일 : 2019-09-26 이 글은 50536 번 읽혔습니다. std::move 는 어떤 객체 t 가 이동 될 수 있음 을 알려준다. 이동 이라 하면 C++ 11 에 도입된 개념으로 t 가 가지

modoocode.com

및 챗GPT


 

<utilty> 에 정의됨.

 

std::move 는 어떤 객체 t 가 이동될 수 있음을 알려준다. 이동은 c++11에 도입된 개념으로 객체 t 가 가지고 있는 자원을 다른 객체에게 효율적으로 전달하는걸 의미한다.

 

std::move는 t 를 우측값 레퍼런스로 캐스팅해 리턴하고, 우리는 그걸 함수에 넣고, 우측값 레퍼런스를 인자로 받는 함수가 오버로딩 되어 선택된다. 그리고 이동 자체는 오버로딩된 함수 내에서 수행하는 것.

 

예시 코드

vector<int> a;
vector<int> b;
a.push_back(1);
a.push_back(2);
a.push_back(3);
b = move(a); // vector& operator=(vector&& _Right) 함수 오버로딩 됨
cout << a.size() << endl;
cout << b.size() << endl;

출력

0
3

 

위 예시에서는 b = move(a); 에서 vector& operator=(vector&& _Right) 함수가 오버로딩 되어 이동을 수행한다.

따라서 만약 내가 만든 클래스에서 이동을 수행하고싶다면 클래스에 이동 생성자나 이동 대입 연산자를 만들어야 할것이다.

'공부 > C\C++' 카테고리의 다른 글

c 매크로 - ## (토큰 결합 연산자)  (0) 2025.06.28
typeid 키워드  (0) 2025.06.28
c extern 키워드 (with 선언과 정의)  (0) 2025.06.24
std::atomic<T>::compare_exchange_weak  (0) 2025.06.14
멤버 함수 포인터를 활용한 호출  (0) 2025.03.20

+ Recent posts