首页 > 解决方案 > 是否可以使用前缀表示法调用 << 运算符?

问题描述

我想知道我是否可以写,例如:<<(object, cout);或者<<(cout,object);object 是一个用户定义的类,它有<<运算符重载,就像人们可以写: int a = +(2,3);并获得预期的结果,如int a = 2 + 3;. 此外,如果这是可能的,但需要几个步骤,应该怎么做?是否应该<<使用两种不同的签名使运算符重载?

标签: c++operator-overloadingprefix-notation

解决方案


就像人们可以写的那样: int a = +(2,3); 并获得预期的结果,如 int a = 2 + 3;

不,你有误会。+(2, 3)将通过逗号运算符的关联性并将+3(3) 分配给变量a

因此,int a = +(2, 3)与 相同int a = 3,而不是int a = 2 + 3

我想知道我是否可以写,例如: <<(object, cout); 或 <<(cout,object);

不,你不能。

如果您想以这种方式使用运算符,则应调用其完全限定名称,例如:

operator+代替+

operator<<代替<<

笔记:

这不适用于基本数据类型。当您使用这些运算符的重载版本时,请注意类范围和命名空间。


推荐阅读