当我在函数中返回指向引用类型的指针时,出现编译器错误initial value of reference to non-const must be an lvalue
。该功能是这样返回指向参考的指针
Testing& copy(Testing test)
{
x = test.x;
return this;
}
但是,当我改变this
到*this
,该错误消失。
当我在函数中返回指向引用类型的指针时,出现编译器错误initial value of reference to non-const must be an lvalue
。该功能是这样返回指向参考的指针
Testing& copy(Testing test)
{
x = test.x;
return this;
}
但是,当我改变this
到*this
,该错误消失。
指针和引用不是一回事。 this
是指针到当前类实例,而*this
是作为一个值的实际实例(更具体地说,左值用作返回值)。
在C++中,this
特殊变量将指针保存到类实例。
您正在创建一个函数,该函数将一个引用返回给一个实例,另一个名称为相同的内存位置。
当您使用*this
时,您将取消引用this
指针,获取保存当前实例的实际内存位置并返回一个别名。
它确实有效!如果您需要多态性,请谨防Object Slicing Problem。
切片仅适用于按值返回/分配。 – Angew
引用不能有指针,但指针*可以*有引用。如果你想返回一个指向你的对象的指针,返回'this'。如果你想返回对象的引用,返回'* this'。 – WhozCraig
你的问题是什么? 'this'是指针,'* this'是一个引用,如果你返回一个引用,你的函数将被编译。毫无疑问。 –
@WhozCraig你能否详细说明,我绝对不会看到你的意思。 –