繁体   English   中英

为什么我不能直接从返回指针的 function 中返回对指针的引用?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM