作者loveflames (咕啾咕啾魔法陣)
看板C_and_CPP
標題Re: [問題] 繼承後 opretor+ 型別轉換問題
時間Sat Mar 18 21:57:56 2017
還是回個一篇好了
dynamic_cast需要RTTI,所以要有virtual function
再來就是父類的operator+回傳的是父類物件,你想要的卻是子類物件
這兩點直接導致你無法這樣轉型
整理一下Exceptional C++ item 20的相關內容
1.operator+設計成以operator+=實作
2.operator+設計成return value,operator+=設計成return reference
3.operator+不能動原本物件
4.operator+應該(非必須)設計成非成員函數;operator+=必須設計成成員函數
5.自訂operator+時,得同時提供一份對應的operator+=
如上,你還要為子類再寫一份operator+=
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 180.217.199.42
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1489845478.A.17E.html
→ ilikekotomi: 感謝分享 這本書我還沒開始看03/19 00:28
→ hunandy14: 感謝~分享03/19 13:43
推 lovejomi: 為什麼不是+=用+實做呀?03/19 19:26
因為返回型態的關係,operator+會有copy成本
如果operator+=用operator+來實作
使用+=時就會多了這個成本
※ 編輯: loveflames (180.217.247.210), 03/19/2017 19:47:28
推 RishYang: 簡單扼要 03/23 21:41