Re: [問題] 繼承後 opretor+ 型別轉換問題

看板C_and_CPP作者 (咕啾咕啾魔法陣)時間8年前發表 (2017/03/18 13:57), 8年前編輯推噓2(203)
留言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
站內文精華 https://goo.gl/vhhjWh
03/20 12:38, 4F

03/23 21:41, , 5F
簡單扼要
03/23 21:41, 5F
文章代碼(AID): #1OpJpc5- (C_and_CPP)
文章代碼(AID): #1OpJpc5- (C_and_CPP)