對象的初始化是說你在聲明的時候就調(diào)用默認(rèn)的或者非默認(rèn)的構(gòu)造函數(shù)進(jìn)行初始化工作如孝,而賦值指的是你用一個已經(jīng)存在的對象去給另一個已經(jīng)存在的對象賦值顶别。而你在聲明一個對象的時候就用另一個已經(jīng)存在的對象對它初始化逆皮,這個不叫賦值,它調(diào)用的是COPY構(gòu)造函數(shù)戚嗅,還是構(gòu)造函數(shù)车海。
其中對相間的賦值操作比初始化操作要慢,因為賦值操作會產(chǎn)生一個臨時性的中間對象涂邀,這個臨時性的中間對象會給被賦值對象賦值瘟仿。聯(lián)想以前談C++傳參的機制是值傳遞這一點不難推斷出,這個對相間的賦值操作一定是調(diào)用了COPY賦值操作符這才導(dǎo)致了一個值傳遞的過程比勉。
所以從程序效率的角度考慮盡量少采用對相間的賦值操作劳较。
下圖所示的是一種新的初始化形式:
對于構(gòu)造函數(shù)中只有一個形參的時候,你還可以如下形式進(jìn)行初始化:
C++11標(biāo)準(zhǔn)還允許你使用{}進(jìn)行初始化:
不過敷搪,在現(xiàn)在的VS上好像C++11還行不通兴想。