필수 값을 강제한다
객체가 의미 있으려면 꼭 필요한 값은 기본 생성 뒤 setter로 미루지 않는다.
객체는 메모리 묶음이 아니라 생성 순간부터 지켜야 할 조건을 가진 값이다. 멤버 선언, 초기화 리스트, 생성 위치가 그 조건을 만든다.
객체가 의미 있으려면 꼭 필요한 값은 기본 생성 뒤 setter로 미루지 않는다.
멤버 선언 순서와 의존 관계가 어긋나면 생성자 리스트 순서와 달리 작동한다.
객체가 컨테이너에 들어가거나 반환될 때 복사와 이동 정책이 맞는지 본다.
class Port {
public:
explicit Port(int value) : value_(value) {
if (value < 0 || value > 65535) throw std::out_of_range("port");
}
private:
int value_;
};