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