看板 C_and_CPP 關於我們 聯絡資訊
還是回個一篇好了 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
hunandy14: 站內文精華 https://goo.gl/vhhjWh 03/20 12:38
RishYang: 簡單扼要 03/23 21:41