c++ - 如何在c ++中重载<<运算符以重复使用?

tae*_*kim 2 c++ operator-overloading

抱歉标题不清楚。最近开始学习C++,不知道如何重载运算符<<使其可重复。

这是一个示例代码。

class Foo{
private:
int* a;
int idx = 0;

public:
Foo(){a = new int[100];
void operator<< (int a) {arr[idx++] = a;}
Run Code Online (Sandbox Code Playgroud)

什么<<基本上是类获取整数作为操作数并将其保存到arr.(这里忽略溢出情况)

例如,a << 100将 100 添加到数组中。

我想要做的是使<<操作符可以重复使用内联像a << 100 << 200 我应该如何修复上面的代码以允许此功能?

提前致谢 :)

Sch*_*eff 5

重载Foo::operator<<()实际上有两个参数:

  1. int右侧给出的参数
  2. this来自左侧的隐式。

为了允许这个运算符的链接,它应该返回一个对左侧的引用(即*this),以便在左侧本身可用。

示例代码:

#include <iostream>

struct Foo {
  Foo& operator<<(int a)
  {
    std::cout << ' ' << a;
    return *this;
  }
};

int main()
{
  Foo foo;
  foo << 1 << 2 << 3;
}
Run Code Online (Sandbox Code Playgroud)

输出:

#include <iostream>

struct Foo {
  Foo& operator<<(int a)
  {
    std::cout << ' ' << a;
    return *this;
  }
};

int main()
{
  Foo foo;
  foo << 1 << 2 << 3;
}
Run Code Online (Sandbox Code Playgroud)

在coliru上进行现场演示