use*_*224 2 c++ pointers reference lvalue
这是一个例子:
void foo(int*& x) {}
struct boo
{
int* z;
int* getZ() { return z; }
};
int main()
{
int* y;
foo(y); // Fine
boo myBoo;
foo(myBoo.getZ()); // Won't compile
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我可以通过让boo :: getZ()返回对指针的引用来解决这个问题,但我试图理解传递给foo()的两个参数之间的区别.boo :: getZ()返回的int*不是左值吗?如果是这样,为什么不呢?
如果T是对象类型并f声明为...
T & f(); f() is an lvalue
T && f(); then f() is an xvalue
T f(); f() is a prvalue
Run Code Online (Sandbox Code Playgroud)
所以getZ()是一个prvalue(T = int *),它是一个rvalue,而不是一个左值.