2

当我在函数中返回指向引用类型的指针时,出现编译器错误initial value of reference to non-const must be an lvalue。功能是这样的

Testing& copy(Testing test)
{
    x = test.x;
    return this;
}

但是当我更改为this*this,错误消失了。

4

2 回答 2

3

在 C++ 中,this特殊变量保存指向类实例的指针。

您正在创建一个函数,该函数返回对实例的引用,即同一内存位置的另一个名称。

当您使用时,*this您正在取消引用this指针,到达保存当前实例的真实内存位置并返回一个别名。

它确实有效!如果您需要多态性,请注意对象切片问题

于 2013-01-09T12:23:17.707 回答
1

指针和引用不是一回事。this指向当前类实例的指针,而*this是作为值的实际实例(更具体地说,当用作返回值时,是左值)。

于 2013-01-09T12:17:54.753 回答