【发布时间】:2018-05-28 18:48:34
【问题描述】:
我是 C++ 新手。我需要一些帮助来理解这段代码 sn-p。
Queue & operator=(const Queue &rhs)
{
front = rhs.front;
nWaiting = rhs.nWaiting;
for (int i = front, j = 0; j < nWaiting; j++)
{
elements[i] = rhs.elements[i];
i = (i + 1) % 100;
}
return *this;
}
我无法理解为什么代码中的运算符前有一个“&”,以及它是如何与 *this 一起工作的。
我了解运算符重载。例如。下面的代码用于加法操作重载。但是我不明白为什么赋值运算符 (=) 重载需要“&”。
V3 operator* (const double factor, const V3 &b)
{
return (b * factor);
}
【问题讨论】:
-
&表示函数的返回类型是一个Queue的引用。
-
Queue& 返回对同一对象的引用,而不是副本。目的是让
=操作改变原始对象并返回对自身的引用。 -
请注意,此代码中的
&标记不称为运算符。运算符&获取对象的地址。但这是在声明和其他指定类型的地方使用的&的完全不同的含义。在一个类型命名另一个类型之后写&,它是对刚刚命名的类型的引用。
标签: c++ reference operator-overloading this