const成员引用的值初始化

use*_*715 6 c++ reference

我正在查看以下形式的代码:

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如上所述初始化是未定义的行为(即使refconst引用).

标准中的12.2.5部分地说,"在构造函数的ctor-initializer中临时绑定到引用成员,直到构造函数退出为止." 这是描述这种情况吗?

Jam*_*lis 4

这段代码格式不正确。您不能默认初始化或值初始化引用。

如果您实际上在 内有一个表达式 ref(),那么是的,12.2.5 将适用,并且当构造函数退出时,临时变量将被销毁。