[C++] Move Constructor

move constructor

C++의 이동생성자는 &&로 정의할 수 있다. C++의 우측값 레퍼런스의 측징은 임시적 이라는 것이다. 예를 들어 벡터에 클래스를 push_back으로 삽입하는 경우에 다음과 같은 동작이 이루어진다.

  1. 임시 객체 생성
  2. 벡터 내부에서 임시 객체 복사
  3. 벡터에 삽입
  4. 임시 객체 소멸

하지만 이동 생성자를 사용하면 다음과 같이 동작한다

  1. 임시 객체 생성
  2. 백터 내부에서 이동 생성자 호출
  3. 백터에 삽입

이동 생성자를 사용하면 데이터를 복사할 필요 없이 임시 객체가 가리키던 포인터를 가리키면 된다. 이동 생성자는 다음과 같이 동작한다.

1
2
3
4
5
StudyClass (StudyClass &&studyClass){
std::cout<<"이동 생성자 호출"<<std::endl;
data = studyClass.data;
studyClass.data = nullptr;
}
Author: Song Hayoung
Link: https://songhayoung.github.io/2020/08/03/Languages/Cplusplus/move-constructor/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.