直接初始化和複製初始化

一、ClassTest ct1("ab");這條語句屬於直接初始化,它不須要調用複製構造函數,直接調用構造函數ClassTest(const char *pc),因此當複製構造函數變爲私有時,它仍是能直接執行的。
 
二、ClassTest ct2 = "ab";這條語句爲複製初始化,它首先調用構造函數ClassTest(const char *pc)函數建立一個臨時對象,而後調用複製構造函數,把這個臨時對象做爲參數,構造對象ct2;因此當複製構造函數變爲私有時,該語句不能編譯經過。
 
三、ClassTest ct3 = ct1;這條語句爲複製初始化,由於ct1原本已經存在,因此不須要調用相關的構造函數,而直接調用複製構造函數,把它值複製給對象ct3;因此當複製構造函數變爲私有時,該語句不能編譯經過。
 
四、ClassTest ct4(ct1);這條語句爲直接初始化,由於ct1原本已經存在,直接調用複製構造函數,生成對象ct3的副本對象ct4。因此當複製構造函數變爲私有時,該語句不能編譯經過。
相關文章
相關標籤/搜索