C++ 返回指向引用的指针

C++ 返回指向引用的指针,c++,pointers,reference,C++,Pointers,Reference,当我在函数中返回指向引用类型的指针时,我得到了一个编译器错误对non-const的引用的初始值必须是左值。函数是这样的 Testing& copy(Testing test) { x = test.x; return this; } 但是当我将this更改为*this时,错误就消失了。指针和引用不是一回事此是指向当前类实例的指针,而*此是作为值的实际实例(更具体地说,当用作返回值时是左值)。指针和引用不是一回事这个是指向当前类实例的指针,而 *此是实际实例作为值(更具体

当我在函数中返回指向引用类型的指针时,我得到了一个编译器错误
对non-const的引用的初始值必须是左值
。函数是这样的

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

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

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

指针和引用不是一回事<代码>这个是指向当前类实例的指针,而 *此是实际实例作为值(更具体地说,是一个Lvalue,用作返回值)。

< P> C++,<代码> < <代码> >特殊变量将<强>指针< /强>保存到类实例。

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

当您使用
*this
时,您将取消引用
this
指针,到达保存当前实例的实际内存位置并返回该实例的别名


它确实有用!谨防如果需要多态性,在C++中,

< P> > <代码> < < /C> >特殊变量将<强>指针< /强>保存到类实例。

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

当您使用
*this
时,您将取消引用
this
指针,到达保存当前实例的实际内存位置并返回该实例的别名


它确实有用!只要小心,以防需要多态性。

引用不能有指针,但指针可以有引用。如果要返回指向对象的指针,请返回
this
。如果要返回对对象的引用,请返回
*this
。您的问题是什么
是指针,
*此
是引用,如果返回引用,函数将编译。毫无疑问。@WhozCraig可以解释一下,我绝对不明白你想表达什么意思。@StephaneRolland我的意思是你可以引用一个指针(比如通过引用传递的out参数指针
(int*&int\u ptr\u ref)
,但是你不能有一个指向引用的指针(这是不允许的:
int&*var;
)。指向引用的指针只不过是指向被引用对象的指针,它只不过是获取对象的地址(通过引用或其他方式)例如
inta;int&b=a,int*c=&b;
c
中的地址是
&a
;@WhozCraig好的。不确定它是否直接帮助了OP:-)引用不能有指针,但指针可以有引用。如果要返回指向对象的指针,请返回
this
。如果要返回对对象的引用,请返回
*this
。您的问题是什么
是指针,
*此
是引用,如果返回引用,函数将编译。毫无疑问。@WhozCraig可以解释一下,我绝对不明白你想表达什么意思。@StephaneRolland我的意思是你可以引用一个指针(比如通过引用传递的out参数指针
(int*&int\u ptr\u ref)
,但是你不能有一个指向引用的指针(这是不允许的:
int&*var;
)。指向引用的指针只不过是指向被引用对象的指针,它只不过是获取对象的地址(通过引用或其他方式)例如
int a;int&b=a,int*c=&b;
c
中的地址是
&a
;@WhozCraig好的。但不确定它是否直接帮助了OP:-)切片仅在按值返回/赋值时适用。切片仅在按值返回/赋值时适用。