[問題] C++ 繼承 object model layout 問題
class 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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.9.13
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1508721853.A.488.html
※ 編輯: gecer (111.255.9.13), 10/23/2017 09:24:50
※ 編輯: gecer (111.255.9.13), 10/23/2017 09:25:56
※ 編輯: gecer (111.255.9.13), 10/23/2017 09:26:29
→
10/23 09:41,
8年前
, 1F
10/23 09:41, 1F
→
10/23 09:42,
8年前
, 2F
10/23 09:42, 2F
→
10/23 09:42,
8年前
, 3F
10/23 09:42, 3F
推
10/23 09:49,
8年前
, 4F
10/23 09:49, 4F
→
10/23 09:49,
8年前
, 5F
10/23 09:49, 5F
推
10/23 15:17,
8年前
, 6F
10/23 15:17, 6F
→
10/23 15:18,
8年前
, 7F
10/23 15:18, 7F
→
10/23 15:18,
8年前
, 8F
10/23 15:18, 8F
修改成c++語法
※ 編輯: gecer (111.255.9.13), 10/23/2017 20:00:57
推
10/23 20:20,
8年前
, 9F
10/23 20:20, 9F
→
10/23 20:21,
8年前
, 10F
10/23 20:21, 10F
→
10/23 20:21,
8年前
, 11F
10/23 20:21, 11F
討論串 (同標題文章)