为什么一切都不能在C++中重载?

Tim*_*Tim 13 c++ operator-overloading

这是合理的sizeof,并typeid不能超载,但我不能看到超载的危害?:,.*..这有技术原因吗?

bta*_*bta 16

引用Bjarne Stroustrup:

没有根本原因不允许超载?:.我只是没有看到需要引入重载三元运算符的特殊情况.请注意,重载expr1?expr2:expr3的函数将无法保证只执行了expr2和expr3中的一个.

...

运营商.(dot)原则上可以使用与 - >相同的技术重载.但是,这样做可能会导致关于操作是否意味着对象重载.或由.... 引用的对象的问题.这个问题可以通过几种方式解决.在标准化的时候,哪种方式最好是不明显的.

资源


Naw*_*waz 7

如果你超载.,你会如何访问班级成员?会是什么意思obj.data

  • @TommyA:有一个微妙但重要的区别.当obj是T*时,意思与(*obj).data相同,你不能重载 - >运算符.有趣的情况是当obj是T时 - 在这种情况下你是"重载" - >没有默认实现. (9认同)
  • @TommyA:它允许智能指针对象感觉像真正的(原始)指针.请注意,` - >`是一个非常特殊的情况.它是一个二元运算符,但在重载期间只使用左侧.它链.评估后,名称解析发生在右侧.所有这些都是独特的行为. (4认同)
  • 但仍然` - >`可以,那么`obj-> data`的含义又是什么呢? (2认同)