C++:运算符(逗号)似乎不起作用

C++: Operator, (comma) doesn't seem to work

本文关键字:不起作用 逗号 运算符 C++      更新时间:2023-10-16

我现在正在编写我的类并测试它。看起来,逗号操作符(operator,)拒绝工作,程序直接跳过它。这是我正在运行的代码

fileObj << buffer,40;

我写了以下操作符(只显示原型,代码不相关):

const file_t& operator<<(const void* buffer);
void operator,(int length);

"操作符<<"工作得很好,程序使用它,但是当它到达"操作符"时,它直接跳过它,就像它根本不存在一样。不用说,这两个操作符是相互依赖的。

知道为什么省略逗号操作符吗?谢谢。

您的<<操作符返回const file_t引用。逗号操作符是一个非const函数。由于类型不匹配,编译器不会选择逗号操作符来执行操作。相反,它使用内置的逗号操作符,简单地计算两个操作数并返回正确的操作数。(由于右操作数的求值在您的示例中没有副作用,因此看起来好像根本没有调用它。)

如果逗号操作符不会修改它所调用的对象,则将其设置为const:

void operator,(int length) const;

如果操作符需要修改对象,那么不要从<<操作符返回const对象:

file_t& operator<<(void const* buffer);