항목 35 : 기반 클래스로 디자인되지 않은 클래스로부터의 상속을 피하라. ( Avoid inheriting from classes that were not designed to be base classes. )
{ 쉽게 말하면, "기반 클래스"로 디자인 되지 않았으니까, 상속하지 않는건 당연하다. 그런데 왜 이런 말이 나오냐 하면, "잘못된 상속"을 사용할 수 있기 때문이다. 기반 클래스로 쓰이는 클래스의 경우, 대부분 다형성을 이용한 객체의 제어 때문에 사용 된다. 이는 상속하는 클래스 B가 기반클래스 A 처럼 행동 해야 할 때인데, 기반 클래스로 디자인하지 않을 경우, 가상 함수가 없다는 것을 의미한다. 이는 가상 소멸자(다형성을 사용하지 않는다면, 그냥 소멸자라도 상관 없다.)가 없어서, 스택이나 힙이 오염될 수 있고, 기반 클래스 A의 의도와 다르게, 상속 클래스 B를 사용 할 수 있다. 왜냐하면, 기반 클래스 A의 성질을 보다 정확하고 잘 아는 사람은 원래의 제작자이다. 그런 제작자가 기반 클래스로 쓰..
책 정리/C++ Coding Standards : C++ 코딩의 정석
2009. 3. 1. 13:24
최근댓글