c++ - 重载 operator<< 改变成员变量

标签 c++ class operator-keyword

我有一个看起来像这样的类:

class A {
  public:
    A() {};
    A& operator<< (A& a, unsigned int i);

  private:
    vector<int> abc;
}

我想提供向 abc 添加对象的功能使用运算符:

A a();
a << 3,4,5; // should do the same as several calls of abc.push_back(i)

我知道我必须重载 <<运算符,我是否还必须重载 ,运算符(operator)?

实际的方法会是什么样子?

最佳答案

永远、永远、永远不要重载 C++ 中的 , 运算符。该语言允许这样做,但您不能这样做并保留运算符(operator)的预期行为。 (特别是,逗号运算符在 C++ 中是一个序列点:编译器保证左侧表达式将在右侧表达式之前求值。如果重载它,将不再保证将求值哪个表达式首先。)

您想使用流插入运算符的多次调用来插入多个对象。

(为完整起见:永远不要重载的其他 C++ 运算符是 &&||。同样,不可能提供客户端代码期望的行为(简称电路,在这种情况下))。

关于c++ - 重载 operator<< 改变成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16884441/

相关文章:

c++ - 有没有一种方法可以从独立的 C++ 程序中调用 R 而无需公开源代码

php - 将Mysql查询结果放入类内的数组中

c++ - 重载输入/输出运算符,为什么它以这种方式工作而不是另一种方式?

c - 按位逻辑运算符和移位运算符

具有函数计数器变量的 Python 装饰器类

c++ - 使用逗号运算符和可变模板参数包折叠表达式

c++ - 在使用时以编程方式弹出 USB 设备

c++ - 代码在调用 delete 时崩溃

c++ - 在 C++、OPENGL 中将我的结构作为数组返回

class - 断开模块脚本与本地脚本的连接