作者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://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1489845478.A.17E.html
1F:→ ilikekotomi: 感谢分享 这本书我还没开始看03/19 00:28
2F:→ hunandy14: 感谢~分享03/19 13:43
3F:推 lovejomi: 为什麽不是+=用+实做呀?03/19 19:26
因为返回型态的关系,operator+会有copy成本
如果operator+=用operator+来实作
使用+=时就会多了这个成本
※ 编辑: loveflames (180.217.247.210), 03/19/2017 19:47:28
5F:推 RishYang: 简单扼要 03/23 21:41