所以基本上这段代码:
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
。这个错误是
错误:'B::B(const B&)' 是私有的
为什么除了直接转换构造函数之外还尝试调用复制构造函数?
从错误消息中可以清楚地看出,创建了一个临时B
文件,然后将其用于复制构造,但为什么呢?这在标准中的什么地方?