My codes:
#include <iostream>
using namespace std;
class Base
{
public:
void print() { doPrint();}
private:
virtual void doPrint() {cout << "Base::doPrint" << endl;}
};
class Derived : public Base
{
private:
virtual void doPrint() {cout << "Derived::doPrint" << endl;}
};
int main()
{
Derived *d = new Derived();
Base* p = dynamic_cast<Base*>(d);
p->print();
delete d;
return 0;
}
The output is Derived::doPrint
, I don't know the answer well. Why not Base::doPrint
? In public inheritance, why Base class can call Derived class's private virtual function?