構(gòu)造函數(shù)參數(shù)是對象 通常類的拷貝構(gòu)造函數(shù)的參數(shù)是什么?
通常類的拷貝構(gòu)造函數(shù)的參數(shù)是什么?復(fù)制構(gòu)造函數(shù)使用類的對象為類的另一個對象賦值,因此構(gòu)造函數(shù)的參數(shù)就是類的對象。Class a{public:a(const a&a)//復(fù)制構(gòu)造函數(shù);}add con
通常類的拷貝構(gòu)造函數(shù)的參數(shù)是什么?
復(fù)制構(gòu)造函數(shù)使用類的對象為類的另一個對象賦值,因此構(gòu)造函數(shù)的參數(shù)就是類的對象。Class a{public:a(const a&a)//復(fù)制構(gòu)造函數(shù);}add const防止復(fù)制構(gòu)造函數(shù)修改形式參數(shù)的值;add reference避免實際參數(shù)傳遞給形式參數(shù)時復(fù)制值,提高效率。
為什么復(fù)制構(gòu)造函數(shù)的形參必須是一個引用?
使用引用參數(shù)復(fù)制構(gòu)造函數(shù)的一個重要原因是避免遞歸調(diào)用!從語言規(guī)范的角度來看,這只是一種規(guī)則。例如&B=a表示B是對a的引用。從邏輯角度看,參數(shù)的傳遞本身就是一個副本。如果不使用引用類型,則當(dāng)復(fù)制構(gòu)造函數(shù)傳遞參數(shù)時將調(diào)用復(fù)制構(gòu)造函數(shù),從而導(dǎo)致遞歸調(diào)用。因此,它是通過引用類型傳遞的。