C++:运算符(逗号)似乎不起作用
C++: Operator, (comma) doesn't seem to work
我现在正在编写我的类并测试它。看起来,逗号操作符(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);
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 带有指定长度字符* 参数的 std::regex_search 在 VS2017 中不起作用?
- Bjarne Stroustrup Book - std_lib_facilities.h - 不起作用(未知类型名称)
- 为什么简单的算术减法在"if"条件下不起作用?
- 为什么Stroustup书中的has_f不起作用
- 你能检查一下为什么在这个代码中从链接列表中删除项目不起作用吗
- 嵌套While循环不起作用(C++问题)
- 编译逗号运算符的 C++ 代码右操作数中的错误不起作用
- 警告:逗号的左操作数在 G++ 编译器中不起作用
- C++:运算符(逗号)似乎不起作用