如何重载 iostream 运算符以对整个流执行功能

How to overload iostream operator to do perform a function on entire stream

我正在写一个简单的 link 列表,它工作正常,但我坚持要重载 ostream(好吧,我不确定我是说 ostream 还是 instream!):

class List
{
public:
    void addToEnd(int data);
    /* operator overloads */
    friend std::istream& operator >> (std::istream& is, int data);
};

std::istream& operator>>(std::istream& is, int data)
{
    for(int i = 0; i < is.gcount(); i++)
    {
        // how to call ist::addToEnd(data);
    }
}

我想以某种方式让它能够:

List list();
list << 2 << 3 << 4;

以便我使用此表单而不是调用 addToEnd(X)

您展示的例子是:

list << 2 << 3 << 4;

显然您需要重载 operator <<,而不是 operator >><< 的参数是 Listint,所以你需要的函数是:

List& operator <<(List& list, int data)
{
    list.addToEnd(data);
    return list;
}

注意这个函数不需要是友元,因为它只使用了List的public个方法。

不涉及 istream 或 ostream。