[Effective C++] 5. 구현 [1/3]
변수 정의를 최대한 늦춰 불필요한 생성 비용을 줄이는 방법과, 캐스팅을 남용하면 안 되는 이유를 정리했습니다.
변수 정의를 최대한 늦춰 불필요한 생성 비용을 줄이는 방법과, 캐스팅을 남용하면 안 되는 이유를 정리했습니다.
모든 매개변수에 타입 변환이 필요할 때 비멤버 함수를 써야 하는 이유와, 예외를 던지지 않는 swap을 지원하는 방법을 정리했습니다.
데이터 멤버를 private에 두어야 하는 이유와, 캡슐화를 높이기 위해 멤버 함수보다 비멤버 비프렌드 함수를 택하는 기준을 정리했습니다.
값에 의한 전달 대신 상수 객체 참조자로 전달해야 하는 이유와, 함수에서 지역 객체의 참조자를 반환하면 안 되는 이유를 정리했습니다.
제대로 쓰기엔 쉽고 잘못 쓰기엔 어려운 인터페이스를 설계하는 원칙과, 클래스를 하나의 타입으로 보고 설계할 때 점검할 항목을 정리했습니다.
자원 관리 클래스에서 원시 자원에 접근하는 방법과, new/delete 형태를 맞추고 스마트 포인터 생성을 별도 문장으로 분리해야 하는 이유를 정리했습니다.
메모리, 파일, 뮤텍스 같은 자원을 객체로 감싸 관리하는 RAII 기법과, 자원 관리 클래스의 복사 동작을 설계하는 방법을 정리했습니다.
operator=에서 자가대입을 안전하게 처리하는 방법과, 객체를 복사할 때 상속받은 부분까지 빠짐없이 복사해야 하는 이유를 정리했습니다.
생성자와 소멸자 안에서 가상 함수를 호출하면 안 되는 이유와, 대입 연산자가 *this의 참조자를 반환해야 하는 이유를 정리했습니다.
다형성을 가진 기본 클래스에 가상 소멸자가 필요한 이유와, 소멸자에서 예외가 빠져나가지 않도록 처리하는 방법을 정리했습니다.