楼主:
gecer (gecer)
2017-10-23 09:24:10class Employee{
public:
print()
{//do Employee method}
};
class Hourlyworker:public Employee{
public:
print()
{//do Hourworker method}
};
Employeee e, *ePtr=&e;
Hourlyworker h,*hPtr=&h;
ePtr->print();//do Employee method
hPtr->print();//do Hourworker method
ePtr=&h;
ePtr->print();//do Employee method
黄色部分 若将print 改成 virtual function 便会do Hourlyworker method 教科书上也
说这是因为使用virtual function会去call vtable的关系object model 如同下列layout
http://www.geeksforgeeks.org/wp-content/uploads/virtualFuns1.png
到这里小弟可理解 但是小弟想请教若无使用virtual function 时 黄色部分的 ePtr
object model layout会是什么样子?ePtr已point &h它是如何call到do Employee method