복사, 이동 생성자 등을 정의하는 이유 유저가 직접 동적할당하는 new의 경우에 얕은 복사를 방지하기 위해서이다. vector, string, 스마트 포인터는 이와 무관하다. 이동 연산자 클래스에서 컴파일러가 알아서 만들어주는 메소드 1. 생성자 2. 소멸자 3. 복사 / 이동 생성자 4. 복사 / 이동 연산자 유저가 클래스 내의 멤버 변수로 포인터를 사용한다면 소멸자, 복사 / 이동 연산자 및 할당자를 관리해야 한다. 초기화 할 때는 습관적으로 brace initialization - {} 을 사용하도록 하는 것이 좋다. 이는 C++11에서 추가된 우측값 레퍼런스와 연관이 있다. 처음에 보면 다소 생소할 수 있는 개념이지만 천천히 학습하다보면 이해 가능하다. 복사 생략(Copy Elision) #inc..