读书人

继承层次中函数调用有关问题

发布时间: 2012-03-30 17:32:09 作者: rapoo

继承层次中函数调用问题
假设类层次有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(),只不过,这个成员函数从基类继承而来。

读书人网 >C++

热点推荐