当我在函数中返回指向引用类型的指针时,出现编译器错误initial value of reference to non-const must be an lvalue
。功能是这样的
Testing& copy(Testing test)
{
x = test.x;
return this;
}
但是当我更改为this
时*this
,错误消失了。
在 C++ 中,this
特殊变量保存指向类实例的指针。
您正在创建一个函数,该函数返回对实例的引用,即同一内存位置的另一个名称。
当您使用时,*this
您正在取消引用this
指针,到达保存当前实例的真实内存位置并返回一个别名。
它确实有效!如果您需要多态性,请注意对象切片问题。
指针和引用不是一回事。this
是指向当前类实例的指针,而*this
是作为值的实际实例(更具体地说,当用作返回值时,是左值)。