基本上,这段代码:
class A {
};
class B {
B (const B& b) {}
public:
B (){}
B (const A& a) {}
};
int main()
{
A a;
B b1(a); //OK
B b2 = a; //Error
}
只有B b2 = a
会产生错误,错误信息如下:
error: ‘B::B(const B&)’ is private
为什么会尝试调用复制构造函数以及直接转换构造函数?
从错误信息可以看出,先创建了一个临时的B
实例,然后将其用于复制构造,但是为什么会这样呢?这在标准中有说明吗?