Доступ к наследованию классов по умолчанию
Предположим, у меня есть базовый и производный класс:
class Base
{
public:
virtual void Do();
}
class Derived:Base
{
public:
virtual void Do();
}
int main()
{
Derived sth;
sth.Do(); // calls Derived::Do OK
sth.Base::Do(); // ERROR; not calls Based::Do
}
как видно, я хочу получить доступ к Base :: Do через Derived. Я получаю ошибку компиляции как «класс Base в недоступном», однако, когда я объявляю Derive как
class Derived: public Base
все работает нормально
Я прочитал, что доступ к наследованию по умолчанию является общедоступным, тогда зачем мне здесь явно объявлять публичное наследование?