Cpp 의 클래스에는 기본 생성자 말고도, 소멸자, 복사 생성자, 복사 할당자, 이동 생성자, 이동 할당자가 존재한다. 위의 다섯가지는 컴파일러가 알아서 만들어 주기 때문에 (기본 생성자 까지도), 일반적으로는 구현할 일이 없지만 만약 클래스에서 raw pointer 멤버 변수 등을 가지고 있어서 메모리 관리가 필요한 경우에는 위와 같은 생성/할당/소멸자를 프로그래머가 직접 구현해 줘야 한다. 이동 생성/할당자를 뺀 세가지를 구현해야 한다는 법칙을 Rule of Three, 이동 생성/할당자를 포함하면 Rule of Five 라고 부른다. 그냥 코드에 주석달았음 참고로 noexcept 같은 경우에는 성능상의 이점도 있다고 한다. C++11 부터는 소멸자 등에 자동으로 컴파일러가 붙여준다고 함 class ..