int a = 20;
int& fun(){
return a;
}
int main(){
fun();
return 0;
}
函数引用是否由func rvalue本身返回?
最佳答案
否。如果函数返回左值引用,则调用该函数会得到一个左值。
如果它返回右值引用,则将得到一个xvalue,如果它按值返回,则将得到一个prvalue。
另外,严格说来,调用函数的结果不是引用。这是int
类型的左值表达式。
通常,您可以通过将decltype
应用于任何表达式来确定其值类别。它将为表达式的类型添加引用性,指示其类别:左值的&
,x值的&&
,而prvalue的则为空。
表达式本身不能具有引用类型,因此添加的引用性不会与它们的类型冲突。
例如,decltype(fun())
是int &
,证明它是左值。
即使在这种情况下不适用,请注意decltype
处理变量名称的方式与其他任何表达式不同(为您提供了变量的类型,而不是表达式类型+值类别)。解决方法是在变量名周围添加第二组(...)
,这使decltype
将其视为任何其他表达式。
关于c++ - 引用是从函数右值返回的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63092240/