→ uranusjr:Upcasting should be avoided, but downcasting is worse 01/07 17:46
→ uranusjr:話說回來你引的兩段其實邏輯上也沒衝突 =p 01/07 17:47
推 littleshan:upcast很正常,為什麼要避免? 01/07 17:55
→ pracinverse:會不會是因為造成物件的內容被切割(object slicing) 01/07 18:02
→ pracinverse:所以upcast需要避免?? 01/07 18:03
推 littleshan:物件切割的起因是多重繼承 01/07 18:14
→ shadow0326:upcasting會造成的問題通常compiler都會抓出來 01/07 18:24
推 saberstar:兩種狀況都有潛在問題 不過重點是你在使用要清楚這些狀 01/08 12:50
依個人理解,這兩種狀況的問題在於:
upcasting造成object slice,
downcasting後,使用原本base class中不存在的function會出問題,
是這樣麼??
※ 編輯: pracinverse 來自: 111.240.137.5 (01/08 21:59)
推 cgcheng:用pass by reference阿,用pass by value你這個容易出包 01/09 02:07
→ cgcheng:用繼承通常是搭傳參,繼承還用傳值,真的等死 01/09 02:09
→ cgcheng:傳指標也行啦 01/09 02:09
→ cgcheng:你的寫法會引發物件複製,當然就會有物件切割的問題 01/09 02:10