賦值運(yùn)算符和復(fù)制構(gòu)造函數(shù)都是用已存在A的對象來創(chuàng)建另一個(gè)對象B。不同之處在于:賦值運(yùn)算符處理兩個(gè)已有對象,即賦值前B應(yīng)該是存在的;復(fù)制構(gòu)造函數(shù)是生成一個(gè)全新的對象,即調(diào)用復(fù)制構(gòu)造函數(shù)之前B不存在。
CTemp a(b); //復(fù)制構(gòu)造函數(shù),C++風(fēng)格的初始化
CTemp a=b; //仍然是復(fù)制構(gòu)造函數(shù),不過這種風(fēng)格只是為了與C兼容,與上面的效果一樣
在這之前a不存在,或者說還未構(gòu)造好。
CTemp a;
a=b; //賦值運(yùn)算符
在這之前a已經(jīng)通過默認(rèn)構(gòu)造函數(shù)構(gòu)造完成。
我覺得將賦值運(yùn)算符稱為“
賦值構(gòu)造函數(shù)”是錯(cuò)誤的,構(gòu)造函數(shù)發(fā)生在對象創(chuàng)建時(shí)期,而賦值是運(yùn)算符,發(fā)生在“運(yùn)算”時(shí)期,賦值運(yùn)算前,對象已經(jīng)構(gòu)造完成,所以不能稱之為“構(gòu)造函數(shù)”。
一家之言??!