我的代码:
#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;
}
输出为Derived::doPrint
,我不太清楚答案。为什么不Base::doPrint
呢?在公共继承中,为什么基类可以调用派生类的私有虚函数?
虚拟将告诉它检查要调用的函数。它仍然知道这是一个Derived
。如果您没有放,virtual
这将不起作用。阅读有关多态的更多信息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句