C ++语法中的赋值运算符重载

享受马修斯

我是C ++的新手。我需要一些帮助来理解此代码片段。

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);
}
萨马拉斯

该引用表示避免复制对象。结果,它将返回对相同object的引用而且,它将提供左值如果您考虑一下,这就是使用赋值运算符时要发生的事情。

C ++中的每个对象都可以通过this指针访问其自己的地址

这意味着您将返回对象本身。

如果您的问题是为什么我们使用*this而不是this,那么会发生这种情况,因为您需要首先取消引用指针,因为返回类型是引用(例如,不是指针)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章