继承层次中函数调用问题
假设类层次有5层
class Base{
virtual void function(){};
};
class D1:public Base{};
class D2:public D1{};
class D3:public D2{
void function(){};
};
class D4:public D3{};
D4 obj;
D2 *p=&obj;
p->function()会调用第一层的函数还是第四层的函数?
[解决办法]
会调用D4::function()
这就是多态性,根据指针所指的对象类型调用成员函数。
指针指向D4类型的对象,当然调用D4的成员函数fuction(),只不过,这个成员函数从基类继承而来。