求助:有关复制构造函数与赋值
#include <iostream>using namespace std;
class X {
public:
X() { cout << "X()" << endl; }
X(int i):a(i)
{
cout << "X(int)" << endl;
}
X( const X& x)
{
cout << "X(const X&)" << endl;
a=x.a;
}
X& operator=(const X& x)
{
cout << "X& operator=(const X&)" << endl;
a=x.a;
return *this;
}
private:
int a;
};
void main()
{
X x1; // Constructor: X()
X x2(1); // Constructor: X(int)
X x3(x1); // Copy-constructor: X(const X&)
X x4=x1; // Copy-constructor: X(const X&)
x4 = x1;// Assign operator: X& operator=(const X&)
}
为什么倒数第二行调用的是X(const X&),而不是X& operator=(const X&)?