Game Develop

[C++] 이동생성자. 본문

C++/C++

[C++] 이동생성자.

MaxLevel 2021. 7. 12. 13:53



Person(Person&& other) : m_ptr(other.m_ptr) 
{
    other.m_ptr = NULL;  // 소멸자호출 방지하기위함.
}

~Person()
{
  delete m_ptr;
}


복사생성자는 아예 새로 할당받는거고, 이동생성자는 호출된 인스턴스가 가지고있는 포인터변수의 주소값을
그대로 옮기는(이동)것이기 때문에 임시객체를 만들필요가없다. 그래서 더 빠르다.

생성자부분에서 other.m_ptr = NULL값을 넣어주는이유는, 안넣어주면은 other인스턴스가 소멸될 때 다른곳으로
이전된 m_ptr이 delete 되버리기 때문이다. 다른곳에서 쓰이고있는데 해제시켜버리면 안됨.