The following code may seem strange at first sight:
class Base{private: virtual void f() = 0;};
How can a pure virtual function be private? Will the derived class be able to override it? Actually, it’s possible for pure virtual functions to have any access modifier: private, protected, or public. Moreover, you can also change their access levels when they’re overridden in a derived class:
class Derived : public Base{public: void f() { std::cout << "Overloaded public f() in Derived class
"; }};