C++ primer中的复制构造函数和运算符重载感觉好像都是完成一样的功能?两个的函数定义也相似,有哪位高手能解释下采用复制初始化的时候的执行过程

C++ primer中的复制构造函数和运算符重载感觉好像都是完成一样的功能?两个的函数定义也相似,有谁能解释下采用复制初始化的时候的执行过程?
如题

------解决方案--------------------
不一样,赋值构造函数是一个对象从无到有
运算符重载是本来就有的两个对象的赋值,左边的对象必须是存在的
------解决方案--------------------
什么时候调用复制构造?
用一个对象初始化另一个对象的时候:A(const A& a);
什么时候调用赋值构造?
显式使用 “=”
什么时候调用构造?
这个也是构造函数,主要看哪个构造函数匹配你的调用形式了
对于类:如果其中有指针成员,一定要对其 “=” 和拷贝构造函数进行重载
否则可能造成多个指针指向同一片内存,结果在释放的时候多次释放引起野指针问题


------解决方案--------------------
1. 没有所谓的“赋值构造”,赋值就是赋值,它不构造新东西
2. 任何构造只在定义新变量时会出现
3. 拷贝构造是构造的一种,不同构造函数到底选择哪个,是由你构造对象时提供的参数决定的。拷贝构造要求提供的参数是同类型的现有一个实例
探讨
也就知道楼上说的那点
什么时候调用复制构造?
什么时候调用赋值构造?
什么时候调用构造?
搞得不是很清楚的...
求达人

------解决方案--------------------
C++ primer中的复制构造函数和运算符重载感觉好像都是完成一样的功能?两个的函数定义也相似,有谁能解释下采用复制初始化的时候的执行过程?

拷贝函数本质是一个构造函数,只不过他是依据一个已存在的对象(对象内容)来构造另一个对象。这过程中会依次调用父类的构造函数,正如一般构造函数的行为那样。
而赋值运算符,本质是使一个已存在的对象内容与目的对象的内容相同。就是说被赋值的对象已经有内容了。但对于拷贝函数,这时候对象是还没有内容的。
一般像安值传参、返回返回值、以及ClassName object = 一个已存在的ClassName对象调用的是拷贝函数。