클래스 계약 정의
멤버 데이터가 어떤 불변식을 가져야 하고 어떤 함수가 그 상태를 바꿀지 정한다.
public 데이터 노출은 불변식을 약하게 만든다class에 멤버를 넣고 객체를 만든다는 설명만으로는 C++ 객체 모델이 보이지 않는다. 자동 저장 기간, 동적 할당, 멤버 초기화, 복사와 이동, 소멸자 호출 시점을 함께 봐야 객체 생성 코드의 비용과 책임을 판단할 수 있다.
멤버 데이터가 어떤 불변식을 가져야 하고 어떤 함수가 그 상태를 바꿀지 정한다.
public 데이터 노출은 불변식을 약하게 만든다지역 객체, 멤버 객체, 동적 할당, static 객체 중 수명 요구에 맞는 위치를 고른다.
new가 필요 없는 경우가 많다생성자 본문 대입이 아니라 initializer list로 멤버를 바로 초기화한다.
const와 reference 멤버는 초기화 목록이 필요하다객체를 값으로 넘기거나 컨테이너에 넣을 때 복사/이동 비용과 의미를 확인한다.
소유 자원이 있으면 Rule of Zero/Five를 본다스코프 종료, delete, 컨테이너 제거 때 소멸자가 자원을 정리하는지 본다.
RAII가 예외 경로를 안전하게 만든다