Не забывайте, что базовый класс может иметь методы, которые не private
, и, таким образом, доступ к производным классом. Те методы protected
или public
базового класса все еще могут ссылаться на методы базового класса private
. Это особенно полезно, если вы хотите, чтобы заблокировать основную функциональность в базовом классе, например, с помощью реализации шаблона в Template Method дизайн:
class base
{
public:
virtual ~base() { /* ... */ }
virtual void base_func() { foo_private(); }
virtual void do_func() = 0;
private:
void foo_private()
{
// pre-do_func() operations
do_func();
// post-do_function operations
}
};
class derived : public base
{
public:
void derived_func() { base_func(); }
virtual void do_func()
{
// Derived class specific operations
}
};
Какая книга, которую вы изучаете на C++, может сказать по этому вопросу? – 2010-01-06 21:35:30