#9. [레거시 C++ 개체 지향] 상속
부모 개체의 멤버 함수를 오버로딩 하지 마라. 오버로딩 함수 탐색 규칙에서 제외된다. 자식 개체를 부모 개체에 대입하지 마라. 아무런 오류 없이 복사 손실 된다. 구현 코드가 없는 단위 전략 인터페이스인 경우에만 다중 상속하라. 소멸자에서 가이드...
부모 개체의 멤버 함수를 오버로딩 하지 마라. 오버로딩 함수 탐색 규칙에서 제외된다. 자식 개체를 부모 개체에 대입하지 마라. 아무런 오류 없이 복사 손실 된다. 구현 코드가 없는 단위 전략 인터페이스인 경우에만 다중 상속하라. 소멸자에서 가이드...
멤버 변수를 수정하지 않는다면, 상수 멤버 함수로 작성하라. 정적 멤버 함수는 obj.f() 가 아닌 T::f() 와 같이 호출하라. 자식 개체에서 부모 개체의 비 가상 함수를 재정의 하지 마라. 가상 함수를 정의하면 가상 함수 테이블을 위한 추...
PImpl 이디엄은 멤버 변수 접근 부하, 메모리 공간 부하, 과도한 힙 사용의 부하가 있으니, 상황에 맞게 도입하라.
멤버 변수 초기화시, 생성후 대입하지 말고 초기화 리스트를 사용하라.(초기화 리스트의 순서는 멤버 변수 선언 순서에 맞춰라.) 생성자에서 필요한 인자를 모두 나열하고 초기화하라. 메모리 패딩을 고려하여 멤버 변수 선언 순서를 정하라. 암시적 복사...
개체는 new-delete 쌍으로 생성/소멸 하라. 배열은 new[]-delete[] 쌍으로 생성/소멸하라. new[]한 것을 delete 만 하면, 메모리 릭이 발생한다. 꼭 delete[]하라. delete는 널 값이면 아무 작업 안한다. 괜히 널검...