Rule of 3/5/0

특별 멤버 함수 규칙은 “자원을 직접 소유하는가”에서 갈라진다

소멸자만 따로 쓰는 순간 복사와 이동 정책도 함께 결정해야 합니다. 반대로 표준 타입이 자원을 소유하면 직접 작성하지 않는 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이동 생성자와 이동 대입까지 소유권 이전을 정의한다.