[英]Why can't I directly return reference to a pointer from a function returning a pointer?
在 C++ 中,此代码无法编译:
double* value() {
return nullptr;
}
double*& function() {
return value();
}
Error: Non-const lvalue reference to type 'double *' cannot bind to a temporary of type 'double *'
但是,此代码编译时没有错误:
double* value() {
return nullptr;
}
double*& function() {
double* valueVar = value();
return valueVar;
}
有人可以向我解释为什么吗? 我会认为他们做了完全相同的事情,对我来说第二个代码看起来是多余的。
value()
按值返回指针,它返回的是一个右值,并且不能绑定到对非 const 的左值引用,例如double* &
,因此您的第一个代码片段无法编译。
在第二个代码片段中,您将本地 object 绑定到引用。 valueVar
是一个左值,可以绑定到非 const 的左值引用,但请注意,当 function 返回时,本地 object 将被破坏,然后返回的引用将始终悬空,任何取消引用都会导致 UB。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.