在 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+=
或反之亦然。
我有一个重载运算符 += 的赋值,因此它将新数据添加到列表中。因此,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+=
或反之亦然。