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

时间:2011-04-12 12:59:51

标签: c++

const std::string s1 = "abc";
const std::string & s2 = "abc";

s2的定义是否合法?如果是这样,s1s2之间有什么区别?

感谢。

2 个答案:

答案 0 :(得分:10)

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

见12.2 / 5:

  

第二个上下文是何时引用   必然是暂时的。暂时的   引用的约束或者   临时的,这是完整的对象   到一个临时的子对象   坚持一生   引用除了指定之外   下方。

答案 1 :(得分:3)

两者都是合法的 S1是std :: String类型的变量,带有const限定符 S2是const引用std :: string类型的临时表。