例子是最好的诠释:
#include <iostream>
using namespace std;
class A
{
public:
int i;
public:
A()
{
i=0;
cout<<"default construct"<<endl;
}
A(int i1):i(i1)
{
cout<<"para construct"<<endl;
}
A(const A&a)
{
cout<<"copy construct"<<endl;
*this=a;
}
A& operator=(const A& a)
{
cout<<"operator="<<endl;
i=a.i;
return *this;
}
};
int main()
{
A a1(2);
A b1=a1;
cout<<"b1.i:"<<b1.i<<endl;
}
输出结果:
para construct
copy construct
operator=
b1.i:2
得出的结论:
1.如果变量在声明的同时调用等号运算符赋值,那么将使用拷贝构造函数;
2.等号运算符不会被调用两次。