[Effective C++] 6. 상속, 그리고 객체 지향 설계 [3/4]
상속받은 비가상 함수와 기본 매개변수 값을 재정의하면 안 되는 이유와, has-a 관계를 객체 합성으로 모형화하는 방법을 정리했습니다.
상속받은 비가상 함수와 기본 매개변수 값을 재정의하면 안 되는 이유와, has-a 관계를 객체 합성으로 모형화하는 방법을 정리했습니다.
인터페이스 상속과 구현 상속의 차이를 구분하는 기준과, 가상 함수를 대신할 수 있는 설계 대안들을 정리했습니다.
public 상속이 is-a 관계를 뜻한다는 원칙과, 파생 클래스에서 상속된 이름이 가려지는 문제를 정리했습니다.
인라인 함수의 이점과 대가를 따져보고, 파일 사이의 컴파일 의존성을 줄이는 방법을 정리했습니다.
내부 객체의 핸들을 반환할 때 생기는 캡슐화 문제와, 예외 안전성을 확보하기 위한 보장 수준을 정리했습니다.
변수 정의를 최대한 늦춰 불필요한 생성 비용을 줄이는 방법과, 캐스팅을 남용하면 안 되는 이유를 정리했습니다.
모든 매개변수에 타입 변환이 필요할 때 비멤버 함수를 써야 하는 이유와, 예외를 던지지 않는 swap을 지원하는 방법을 정리했습니다.
데이터 멤버를 private에 두어야 하는 이유와, 캡슐화를 높이기 위해 멤버 함수보다 비멤버 비프렌드 함수를 택하는 기준을 정리했습니다.
값에 의한 전달 대신 상수 객체 참조자로 전달해야 하는 이유와, 함수에서 지역 객체의 참조자를 반환하면 안 되는 이유를 정리했습니다.
제대로 쓰기엔 쉽고 잘못 쓰기엔 어려운 인터페이스를 설계하는 원칙과, 클래스를 하나의 타입으로 보고 설계할 때 점검할 항목을 정리했습니다.