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 되버리기 때문이다. 다른곳에서 쓰이고있는데 해제시켜버리면 안됨.