作者:
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