c++ - 是否可以使用前缀表示法调用 << 运算符?
问题描述
我想知道我是否可以写,例如:<<(object, cout);
或者<<(cout,object);
object 是一个用户定义的类,它有<<
运算符重载,就像人们可以写:
int a = +(2,3);
并获得预期的结果,如int a = 2 + 3;
. 此外,如果这是可能的,但需要几个步骤,应该怎么做?是否应该<<
使用两种不同的签名使运算符重载?
解决方案
就像人们可以写的那样: 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<<
代替<<
笔记:
这不适用于基本数据类型。当您使用这些运算符的重载版本时,请注意类范围和命名空间。
推荐阅读
- node.js - 在 Debug Container 中安装 Node 依赖项
- flutter - 我正在尝试提供程序,它使一切都很好,但是我的文本小部件中的 textField 文本没有更新
- apache-flink - Flink 中的处理流
- tensorflow-federated - Tensorflow federated:如何将远程工作人员与 iterative_process.next 中的远程数据集映射?
- python - 重复数组直到一定长度
- angular - 无法从角度的 ng-bootstrap lib 中获取属性值
- java - 使用 docker 启动 quarkus 时,错误 OIDC 服务器在 'quarkus.oidc.auth-server-url' URL 不可用
- jenkins - Jenkins api 令牌到期
- c++ - 使用未强制转换的十六进制值时的未定义行为
- r - 为什么我的 R 代码没有通过第一次迭代