赋值运算符和复制构造函数都是用已存在A的对象来创建另一个对象B。不同之处在于:赋值运算符处理两个已有对象,即赋值前B应该是存在的;复制构造函数是生成一个全新的对象,即调用复制构造函数之前B不存在。
CTemp a(b); //复制构造函数,C++风格的初始化
CTemp a=b; //仍然是复制构造函数,不过这种风格只是为了与C兼容,与上面的效果一样
在这之前a不存在,或者说还未构造好。
CTemp a;
a=b; //赋值运算符
在这之前a已经通过默认构造函数构造完成。
我觉得将赋值运算符称为“
赋值构造函数”是错误的,构造函数发生在对象创建时期,而赋值是运算符,发生在“运算”时期,赋值运算前,对象已经构造完成,所以不能称之为“构造函数”。
一家之言!!