Lifetime Contract

생성자는 유효 상태를 만들고, 소멸자는 마지막 책임을 닫는다

생성자와 소멸자는 호출자가 직접 순서를 관리하는 일반 함수가 아니라 객체가 태어나고 사라지는 경계에서 자동 실행되는 수명 계약입니다.

01저장 공간스택, 전역 영역, 힙 중 어디에 객체가 놓일지 정해집니다.
02생성자멤버를 초기화해 public 함수가 기대하는 상태를 만듭니다.
03불변식객체가 바로 사용 가능한 조건을 세웁니다.
04사용 구간멤버 함수는 생성자가 보장한 상태를 전제로 동작합니다.
05소멸자객체가 소유한 자원을 한 번만 정리합니다.
Constructor 시작 상태 보장 Book book(...) 순간 자동 호출되어 멤버 값을 준비합니다.
Member Functions 보장된 상태 사용 객체가 유효하다는 전제 위에서 읽기와 변경을 수행합니다.
Destructor 소유 자원 반환 파일, 메모리, 핸들처럼 객체가 책임진 자원을 정리합니다.
기본 생성자
인자 없이 객체를 만들 때
가장 안전한 기본 상태를 만듭니다.
빈 객체도 유효한가?
매개변수 생성자
객체 생성 입력을 받을 때
입력으로 의미 있는 시작 상태를 만듭니다.
잘못된 입력은 어디서 막는가?
소멸자
스코프 종료 또는 delete 시점
생성 후 획득한 자원을 반환합니다.
객체가 직접 소유한 자원이 있는가?
읽는 기준: 생성자는 “사용 가능한 객체를 만든다”, 소멸자는 “객체가 책임진 자원을 끝낸다”로 구분하면 됩니다.