在 C++ 中为链表重载运算符 +=

Overloading operator += for linked list in c++

我有一个重载运算符 += 的赋值,因此它将新数据添加到列表中。因此,List += data 应该表示 list=list+data,这在逻辑上类似于 operator += 对基本类型(如 int 等)所做的操作。我很讨厌链表,我刚刚想出了如何用函数来做,所以我不知道在这种情况下该怎么做。

List& List::operator+=(const T& newData)
    {
        last_ = (!first_ ? first_ : last_->next_) = new Elem(newData);
        ++listSize_;
        return *this;
    };

where T is from template <typenameT> class List {...} "

这样可以吗,我的意思是我可以使用函数

中的代码吗
List& addToList (const T& newData) {same code snippet}

,它会给我预期的结果吗?我不这么认为,因为它从不在代码中使用运算符本身,这让我有点困惑。

很明显我是编码的初学者,很抱歉我的 cpp 不好 :)

如果您为 class 定义 operator+=,则在 class 的实例上调用它:

yourlist += somedata;

等于调用任何其他方法:

yourlist.operator+=( somedata );

它只是一个语法糖。正如您所看到的,这与任何其他成员函数几乎相同(除了它允许您以特殊方式调用它)。因此,通过调用方法 addToList() 实现 operator+= 或反之亦然。