const std::string s1 = "abc";
const std::string & s2 = "abc";
s2
的定义是否合法?如果是这样,s1
和s2
之间有什么区别?
感谢。
答案 0 :(得分:10)
是的,s2是合法的。 s2绑定到临时std :: string - 延长临时生命周期。 s1不是临时的,它是一个命名变量。
见12.2 / 5:
第二个上下文是何时引用 必然是暂时的。暂时的 引用的约束或者 临时的,这是完整的对象 到一个临时的子对象 坚持一生 引用除了指定之外 下方。
答案 1 :(得分:3)
两者都是合法的 S1是std :: String类型的变量,带有const限定符 S2是const引用std :: string类型的临时表。