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:-)切片仅在按值返回/赋值时适用。切片仅在按值返回/赋值时适用。