자원을 멤버로 감싼다
파일, 메모리, lock 같은 자원은 unique_ptr,
vector, lock_guard 같은 멤버에 맡긴다.
생성자는 유효한 불변식을 만들고 소멸자는 획득한 자원을 반납한다. 멤버 초기화 순서, 부분 생성 실패, noexcept 소멸 규칙까지 맞아야 RAII가 성립한다.
파일, 메모리, lock 같은 자원은 unique_ptr,
vector, lock_guard 같은 멤버에 맡긴다.
생성자 본문에서 예외가 나도 이미 생성된 멤버와 기반 클래스는 역순으로 정리되어야 한다.
정리 실패를 예외로 밖에 내보내면 stack unwinding 중
std::terminate로 이어질 수 있다.
new, delete, fopen,
close가 생성자와 소멸자에 흩어져 있지 않은가.
class Session {
std::unique_ptr<Connection> connection_;
std::vector<std::byte> buffer_;
};