Случайная цитата:
Самое важное правило ООП на C++ таково: открытое наследование означает «является». Запомните это.
Скотт Майерс