자원 소유 규칙

Rule 선택 기준

클래스가 자원을 직접 소유하는지부터 판단하면 Rule of Three, Five, Zero 중 어느 규칙을 적용할지 빠르게 결정할 수 있습니다.

자원 없음컴파일러 기본 동작
RAII 멤버Rule of Zero
직접 소유Five까지 점검
복사 금지=delete로 명시
01

소유 여부 확인

new/delete, 파일 핸들, mutex처럼 수명 관리가 필요한 자원이 있는지 먼저 확인합니다.

02

기본 동작 신뢰

std::string, vector, unique_ptr 같은 멤버가 수명을 관리하면 직접 특수 멤버를 만들지 않습니다.

03

직접 관리 시 세트로 설계

소멸자, 복사, 이동 동작을 따로가 아니라 한 묶음으로 검토합니다.

04

의도 차단

복사하면 위험한 객체는 복사 생성자와 복사 대입을 =delete로 막습니다.

실전 판단

  • 직접 메모리 관리는 마지막 선택지로 둡니다.
  • 소유권 이전이 필요하면 이동 생성자와 이동 대입의 noexcept까지 확인합니다.
  • 연산자 오버로딩은 자기 대입과 예외 안전성을 함께 점검합니다.

규칙 매칭

ZeroRAII 멤버
Three복사만 필요
Five이동 최적화
Delete복사 금지