[Modern C++ 정리] Move 3
starryeye:
move를 알아보기 위해 먼저 copy를 알아보자.. 위 코드의 문제점에 대해 알아보자.. main() 함수에서.. Cat 클래스의 c1 이라는 지역 객체 를 선언 하였다. c2라는 지역 객체를 선언하고 c1으로 복사 대입 연산자로 초기화 하였다. C++에서는 복사 대입 연산자로 초기화 할 경우, 복사 생성자가 호출 된다. Cat 클래스에서 현재 복사 생성자가 없는데 이때 컴파일러가 생성해준다. 생성해주는 복사 생성자는 얕은 복사로 생성된다. 그래서 해당 코드의 문제는 복사 생성자(얕은 복사)로 c2가 초기화 되기 때문에.. c1의 포인터 변수 name 과 c2의 포인터 변수 name이 동일한 값을 가지게 된다. 그리고.. main() 함수 블럭이 끝날 때.. c1, c2의 소멸자가 불리게 되는데.. c..