关于 SO 上的常量引用的生命周期有几个问题,但我仍然不明白。
这段代码有效吗?
struct S
{
const int &ref;
S( const int &x ) : ref(x) { }
};
int main( )
{
S s( 0 );
// ...
use( s.ref );
// ...
return 0;
}
直觉上我会说不,因为应该在计算表达式 ( )0
之后过期。S s(0);
但是 GCC 和 CLANG 都可以很好地编译它,没有警告,并且 valgrind 没有检测到任何运行时错误。
我在参考中缺少什么?