C++:const对本地对象的引用

pic*_*c11 4 c++

const std::string s1 = "abc";
const std::string & s2 = "abc";
Run Code Online (Sandbox Code Playgroud)

s2法律的定义是什么?如果是这样,s1和之间有什么区别s2

谢谢.

Eri*_*rik 10

是的,s2是合法的.s2绑定到临时std :: string - 延长临时生命周期.s1不是临时的,它是一个命名变量.

见12.2/5:

第二个上下文是引用绑定到临时的.除了下面指定的内容之外,引用绑定的临时对象或作为临时绑定对象的子对象的完整对象的临时对象的生命周期仍然存在.