const std::string s1 = "abc";
const std::string & s2 = "abc";s2的定义合法吗?如果是,s1和s2之间的区别是什么
谢谢。
发布于 2011-04-12 21:03:05
是的,s2是合法的。s2被绑定到一个临时的std::string --延长临时的生命周期。s1不是一个临时变量,它是一个命名变量。
参见12.2/5:
第二个上下文是将引用绑定到临时。绑定了引用的临时对象或绑定了临时对象的子对象的完整对象的临时对象在引用的生存期内持续存在,但下面指定的除外。
发布于 2011-04-12 21:09:40
两者都是合法的。
S1是一个带有常量限定符的std::String类型的变量。
S2是对std::string类型的临时变量的常量引用。
https://stackoverflow.com/questions/5635568
复制相似问题