c++重載運算符 既然有了=賦值操作符重載,為什么還要調(diào)用拷貝構(gòu)造函數(shù)?
既然有了=賦值操作符重載,為什么還要調(diào)用拷貝構(gòu)造函數(shù)?復制構(gòu)造函數(shù)用于在未生成對象時構(gòu)造另一個對象。=賦值運算符重載用于在對象已存在時使用另一個對象構(gòu)造對象。有必要判斷它不是通過給自身賦值來構(gòu)造的。同
既然有了=賦值操作符重載,為什么還要調(diào)用拷貝構(gòu)造函數(shù)?
復制構(gòu)造函數(shù)用于在未生成對象時構(gòu)造另一個對象。
=賦值運算符重載用于在對象已存在時使用另一個對象構(gòu)造對象。有必要判斷它不是通過給自身賦值來構(gòu)造的。同時判斷部分構(gòu)件不需要重新構(gòu)造。
C 賦值運算符重載,為什么要返回引用?
由于賦值操作會更改左值,而這樣的運算符不會更改操作數(shù),因此賦值運算符重載會返回一個表達式(a=b)=C)的引用,該表達式會再次寫入a=b。歸還臨時物品是合理的。如果返回引用,在大多數(shù)情況下不會出錯或?qū)е履承┎僮鲾?shù)意外修改。然而,這使得表達式(a,b)=C出現(xiàn),這與約定有點不一致。當然,也可以返回常量引用。
c 類初始化,復制構(gòu)造函數(shù)與運算符重載,在什么時候用?
初始化是第一個實例,沒有分配其他實例。它是這樣的:a
復制構(gòu)造在第一個實例上有其他實例賦值。例如,a,B,B=a,它與copy構(gòu)造函數(shù)的編寫相匹配,copy構(gòu)造函數(shù)的參數(shù)就是這類對象的引用。
賦值函數(shù)在實例化后調(diào)用,而不是在第一次賦值后調(diào)用。例如,a=B意味著賦值函數(shù)的調(diào)用必須在實例化對象之間。