Re: [問題] 繼承後 opretor+ 型別轉換問題
看板C_and_CPP作者loveflames (咕啾咕啾魔法陣)時間8年前發表 (2017/03/18 13:57), 8年前編輯推噓2(2推 0噓 3→)留言5則, 4人參與討論串2/2 (看更多)
還是回個一篇好了
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
→
03/19 00:28, , 1F
03/19 00:28, 1F
→
03/19 13:43, , 2F
03/19 13:43, 2F
推
03/19 19:26, , 3F
03/19 19:26, 3F
因為返回型態的關係,operator+會有copy成本
如果operator+=用operator+來實作
使用+=時就會多了這個成本
※ 編輯: loveflames (180.217.247.210), 03/19/2017 19:47:28
→
03/20 12:38, , 4F
03/20 12:38, 4F
推
03/23 21:41, , 5F
03/23 21:41, 5F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):