为什么编译器会在第 1 行给出错误,即使不会在第 1 行调用复制构造函数并且如果将复制构造函数签名声明为 const,错误就会消失?
class A {
int i;
public:
A(int n) :
i(n) {
cout << "A ctor" << endl;
}
A(A& a) :
i(a.i) {
cout << "A c-ctor" << endl;
}
~A() {
}
};
int main() {
A a1(1);
A a2 = 2; // line 1
A a3 = a1; // line 2
}
//以上代码是用MinGW编译的