返回指向引用的指针

时间:2013-01-09 12:16:08

标签: c++ pointers reference

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

使用*this时,你取消引用this指针,进入保存当前实例的实际内存位置并返回别名。

确实有效!如果您需要多态性,请注意Object Slicing Problem

答案 1 :(得分:1)

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