3. Class Design, Inheritance, and Polymorphism

클래스 설계, 상속, 그리고 다형성에 대해 알아보자.

14. Order, Order!

상속의 남용을 피하라.

15. Uses and Abuses of Access Rights

언어의 설계를 뒤엎으려 하지 마라. 예를 들어, 클래스 정의부를 복사하고 friend 선언을 해 버린다거나 템플릿 멤버 함수의 로컬 인스턴스화를 해서 캡슐화를 깨지 마라.

16. (Mostly) Private

private 멤버의 이름은 다른 멤버나 friend로부터만 접근 가능하다. 그러나 그 코드는 그 멤버에 대한 포인터를 반환해서 그 멤버에 대한 제어를 유출할 수 있다. private 멤버는 그 클래스의 정의부를 볼 수 있는 코드에서만 보일 수 있다.

17. Encapsulation

모든 데이터 멤버는 private로 두어라. 예외는 캡슐화 없이 모든 멤버를 public으로 두는 C 스타일 struct이다. 가장 올바르게 써야 하는 것은 인터페이스다. 다른 모든 것은 나중에 고칠 수 있다. 인터페이스를 잘못하면 나중에 영영 고치지 못할 수도 있다.

18. Virtuality

인터페이스는 비 virtual로 두는 것을 선호하라. virtual 함수는 private로 두는 것을 선호하라. 파생 클래스가 virtual 함수의 기반 구현을 가동시킬 필요가 있을 때에만 protected로 두어라. 기반 클래스 소멸자는 public virtual이거나 protected nonvirtual이어야 한다.

19. Enforcing Rules for Derived Classes

소멸자가 절대 예외를 던지게 하지 말라. 소멸자는 항상 nothrow여야 한다. 예외 명세는 C++20에서 없어졌다. 대입 연산자를 virtual로 두지 말라. 런타임 에러에 대해 컴파일 타임 에러를 선호하라.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Google photo

Google의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 /  변경 )

%s에 연결하는 중