这个我在行
class A
{
public:
explicit A(int num = 0):num(num){}//构造函数,如果没有参数,表示num = 0
A(A& a) { num = a.num }//复制构造函数
A& operator=(A& a) { num = a.num; return *this }//重载=运算符
private:
int num;//一个私有成员变量
}
int main()
{
A a(5);
A b(a);//调用复制构造函数,没疑问
//下面两种容易混淆,都有运算符=
A c = a;//调用复制构造函数
A d;
d = a;//这个调用重载=运算符
/*
定义c的时候,还没有为c分配内存,此时需要复制构造函数在内存中为c开辟内存
而d,开始已经调用了默认构造函数,此时已经分配好了内存,所以,d = a就是重载=
*/
return 0;
}