#include <iostream>
int foo()
{
return 0;
}
int main()
{
const int& a = foo();
std::cout << &a << std::endl;
}
在这段代码中,a
绑定到右值。获取其地址合法吗? (我所说的法律是指:代码格式不正确?我是否导致了未定义的行为?)
这可以。在 C++11 中你甚至可以这样做:
int&& a = foo();
a = 123;
您可以像这样考虑临时变量(概念上和一般情况下):
x = func(); // translated as:
auto __temporary = func();
x = __temporary;
__destruct_value_now_and_not_later(__temporary);
除非如果x
是引用类型的定义,编译器会注意到您有意引用临时值,并通过删除早期销毁代码来延长其生命周期,使其成为普通变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)