为什么私有方法会覆盖基类的公共虚拟方法(具有公共继承)?

时间:2019-04-02 13:20:09

标签: c++ c++11 gcc

示例代码

#include <iostream>

class A 
{
    public :
     A() {}
     virtual void F() { std::cout << "A::f";}
};

class B: public A
{
    public:
     B() {}


    private:
      void F()  { std::cout << "B::f"; }
};

int main()
{
    B b;
    A * ptr = &b;
    ptr->F();
    return 0;
}

来自类B的方法F()会覆盖A::F(),尽管它在私有部分而不是公共部分。为什么我不能拥有不覆盖B::F()的私有方法A::F()

如果虚拟机在不检查private/public部分的情况下工作,也许应该引发任何警告或错误?

0 个答案:

没有答案