是否在此代码中创建了临时值?

hu *_*ang 2 c++

请考虑以下代码:

class B;

class A
{
  public:
    A() {}
    A(B &b);
};

class B {};

A::A(B &b) {}

int main()
{
    B b;

    const A &refa = b;// does this line create a temporary value?

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:代码是否const A &refa = b;创建了临时值?

Ker*_* SB 8

是的,A(b)在初始化语句中创建了一个临时对象,它立即绑定到常量引用refa.这具有延长临时的生命周期以匹配refa变量范围的效果.