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