为什么在具有const引用参数的构造函数中不能使用临时值?

时间:2013-04-16 02:50:57

标签: c++ const-reference

代码如下

class A {};
class B
{
public:
    B(const A& a) {}
    void fun() {}
};

int main(int argc, char *argv[])
{
    B b(A());
    b.fun(); // Error: left of '.fun' must have class/struct/union  

    A a;
    B b2(a);
    b2.fun(); //Okay

    return 0;
}

为什么?

1 个答案:

答案 0 :(得分:2)

代码

 B b(A());

不是声明B的对象,而是声明函数b的函数声明,它返回类型为B的对象,并采用单个(未命名)参数函数返回类型A(并且不进行输入)。 (引自下面的链接)。因此,您看到了这个错误。

请参阅C++ most vexing parse