是什么区别public,private以及protected用C++继承?我在SO上发现的所有问题都涉及具体案例.
假设我有一个基类和派生类:
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
}
Run Code Online (Sandbox Code Playgroud)
如我所见,我希望通过Derived访问Base :: Do.我得到一个编译错误,因为"类Base不可访问"但是当我声明Derive as时
class Derived: public Base
Run Code Online (Sandbox Code Playgroud)
它工作正常.
我已经读过默认继承访问是公共的,那为什么我需要在这里显式声明公共继承?