返回类型是一个参考 - 会发生什么?

时间:2017-01-25 08:19:30

标签: c++ pointers reference return

LinkedList& LinkedList::operator= (const LinkedList& other)
{
    if(this == &other)
    {
        return *this;
    }

    /* some other codes if this != &other */
}

当代码返回 * 执行此时,是否会返回的地址?这意味着接收该值的LHS变量将具有与 this 相同的地址?

2 个答案:

答案 0 :(得分:0)

假设= - 运算符的返回值是值=(a,b)返回。在中缀表示法中使用此运算符的示例。

a=b=2; //this is equivalent to a=(b=2);
print(a);

此代码片段应返回“2”,因为当执行b = 2时,它返回右侧的值(或换句话说,b的左侧的新值),然后作为a=的rhs提供。

因此对于链表而言,当它已经等效于rhs时,它只会返回lhs(“this”)。可能通过在注意到操作员时提前终止代码来进行某种形式的优化实际上不必更改任何内容。

答案 1 :(得分:0)

operator *通常具有签名

MyClass& operator*(MyClass *)
const MyClass& operator*(const MyClass *)

这就是"指针键入"并返回"参考类型"

this始终是指向运行该方法的类的实例的指针。*this因此是对该实例的引用。

请注意比较是(this == &other),它使用其他地址将其与this指针进行比较。