Raj*_*Raj 1 c++ virtual-functions
我在理解上做了一些练习.在编译下面的代码我得到Derived :: disp()调用,然后调用非虚函数"打印".
我的问题是为什么调用派生类"打印"版本而不是基本打印版本甚至"打印"不是虚拟的.
class Base
{
public:
void print(){
cout<<"Base::Print()\n";
}
virtual void disp(){
cout<<"Base::Disp()\n";
}
};
class Derived: public Base
{
public:
void print(){
cout<<"Derived::Print()\n";
}
void disp(){
cout<<"Derived::Disp()\n";
print();
}
};
void main()
{
Base *pB = new Derived();
pB->disp();
}
Run Code Online (Sandbox Code Playgroud)
输出:
Derived :: Disp()
Derived :: Print()
如果在(虚拟或非虚拟)成员函数内调用了非虚函数,则调用该类的成员函数.
如果你打电话给pB->print()主,它会打电话Base::Print.但就目前而言,pB->Disp()调用的基础是从类内部Derived::Disp()调用Derived::Print它Derived.