0

Example code

#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;
}

Method F() from class B overrides A::F() despite fact it's in private section not public. Why I cannot have private method B::F() which doesn't overrides A::F() ?

If virtuals works without checking private/public sections, maybe there should be any warning or error thrown?

s.paszko
  • 633
  • 1
  • 7
  • 21

0 Answers0