특별 멤버 함수 규칙은 “자원을 직접 소유하는가”에서 갈라진다
소멸자만 따로 쓰는 순간 복사와 이동 정책도 함께 결정해야 합니다. 반대로 표준 타입이 자원을 소유하면 직접 작성하지 않는 Rule of Zero가 기본입니다.
순서
판정 질문
예
아니오
1
raw 포인터, 파일 핸들, mutex를 직접 소유하는가?
소멸자와 복사 정책 검토
Rule of Zero
2
소멸자, 복사 생성자, 복사 대입 중 하나를 직접 쓰는가?
Rule of Three
컴파일러 생성 함수 유지
3
이동이 필요하거나 성능상 의미가 있는가?
Rule of Five
복사 금지 또는 Three로 충분
Zero자원 소유는 string, vector, unique_ptr 같은 타입에 맡긴다.
Three소멸자, 복사 생성자, 복사 대입을 한 세트로 본다.
Five이동 생성자와 이동 대입까지 소유권 이전을 정의한다.