我正在查看以下形式的代码:
class foo
{
public:
foo() {}
//...
};
class bar
{
public:
bar() : ref() {}
private:
const foo &ref;
};
Run Code Online (Sandbox Code Playgroud)
是否正确使用临时初始化引用?我知道有可能初始化一个带有临时变量的局部变量的const引用,这样做可以延长临时变量的生命周期,例如:
const foo &tmp = funcThatReturnsByValue(); //OK
Run Code Online (Sandbox Code Playgroud)
但是,初始化列表中相关初始化引用的答案之一表明"短期"和"长期"引用之间存在差异,并且ref如上所述初始化是未定义的行为(即使ref是const引用).
标准中的12.2.5部分地说,"在构造函数的ctor-initializer中临时绑定到引用成员,直到构造函数退出为止." 这是描述这种情况吗?