其他分享
首页 > 其他分享> > c – 为什么不能使三元运算符过载?

c – 为什么不能使三元运算符过载?

作者:互联网

为什么不能使三元运算符超载?:’?

我经常使用三元运算符来合并if语句,并且很好奇为什么语言设计者选择禁止此运算符过载.我找到了解释为什么在C++ Operator Overloading,但没有找到一个描述为什么这是不可能的.脚注提供的唯一信息是它不能超载.

我最初的猜测是,重载运算符几乎总是违反上面链接中给出的第一或第二原则.重载的含义很少是明显的或明显的,或者它将偏离其原始的已知语义.

所以我的问题更多的是为什么这不可能而不是如何,因为我知道它无法完成.

解决方法:

我认为当时的主要原因似乎并不值得
为该运算符发明新语法的努力.
没有令牌?:,所以你必须创建一些令牌
专门针对它的语法规则. (目前的语法规则
操作符跟随操作符,这是一个单一的操作符
令牌.)

正如我们从经验中学到的那样,使用运算符重载
更合理的是,我们显然不应该这样做
允许超载&&和||或者,为了
其他答复指出的原因,可能不是
运算符逗号(因为重载版本不会有
用户期望的序列点).所以动机
支持它甚至比原来还要少.

标签:c,operator-overloading,ternary-operator
来源: https://codeday.me/bug/20190926/1822131.html