【发布时间】:2013-07-30 23:28:57
【问题描述】:
为什么不能重载三元运算符'?:'?
我经常使用三元运算符来合并 if 语句,并且很好奇为什么语言设计者选择禁止该运算符被重载。我在C++ Operator Overloading 中寻找解释原因,但没有找到描述为什么这是不可能的解释。脚注提供的唯一信息是它不能被重载。
我最初的猜测是,重载运算符几乎总是会违反上面链接中给出的第一或第二个原则。重载的含义很少会很明显或清楚,或者会偏离其原始已知语义。
所以我的问题更多是为什么这是不可能的,而不是如何,因为我知道这是不可能的。
【问题讨论】:
-
在三元运算符中重载可能被解释为“评估”的所有内容的能力是否不够?
-
您究竟想让它重载做什么?这是一个
if-else声明,你怎么能以任何有意义的方式改变它? -
感谢 cmets 和链接。我确实看到链接的问题可能重复,但没有找到任何回答我的问题的答案。
标签: c++ visual-c++ operator-overloading operators ternary-operator