operator重載運算符 C 賦值運算符重載,為什么要返回引用?
C 賦值運算符重載,為什么要返回引用?由于賦值操作會更改左值,而這樣的運算符不會更改操作數(shù),因此賦值運算符重載會返回一個表達(dá)式(a=b)=C)的引用,該表達(dá)式會再次寫入a=b。歸還臨時物品是合理的。
C 賦值運算符重載,為什么要返回引用?
由于賦值操作會更改左值,而這樣的運算符不會更改操作數(shù),因此賦值運算符重載會返回一個表達(dá)式(a=b)=C)的引用,該表達(dá)式會再次寫入a=b。歸還臨時物品是合理的。如果返回引用,在大多數(shù)情況下不會出錯或?qū)е履承┎僮鲾?shù)意外修改。然而,這使得表達(dá)式(a,b)=C出現(xiàn),這與約定有點不一致。當(dāng)然,也可以返回常量引用。
c 函數(shù)同名不同返回值算重載?
C函數(shù)同名不同返回值不過載!函數(shù)重載忽略返回值類型。
----------------------------------------------重載成員函數(shù)的特征如下:
1)相同的范圍(在同一類中);
2)相同的函數(shù)名;
3)不同的參數(shù);
4)虛擬關(guān)鍵字是可選的。
C 運算符重載=號時,為什么返回值要用引用?而沖在重載 號時不需要?
一般來說,這里返回引用的主要目的是實現(xiàn)級聯(lián)操作,但是在這里使用引用主要是為了提高效率。例如,表達(dá)式a=b=C是合法的,因為它可以被視為a=(b=C),b=C返回對b的引用。至于為什么不使用值傳遞,這是效率問題。在a=B中,很明顯B只需要提供B的每個成員變量,不需要生成B的副本,同樣,返回值是連續(xù)操作的,因此不需要生成新的副本,通過引用傳遞可以避免無用的副本。例如,對于一個有1000000個元素的單鏈接表,a=B只需要復(fù)制一次,而值轉(zhuǎn)移只需要復(fù)制三次,這顯然不劃算。另外,為了安全起見,consta&;operator=(consta&){}通常是這樣寫的,因為不應(yīng)該更改這些引用的屬性。
重載函數(shù)的返回值相同與不同都可以嗎?
函數(shù)重載僅取決于參數(shù)的數(shù)量和類型,而不是返回值。示例:int bigger(int a,int b,int c){…}float bigger(float a,float b){…}float bigger(float a,float b,float c){…}以上三個函數(shù)都可以。但是,不能出現(xiàn)具有不同返回值的重載。例如,int bigger(int a,int b){…}float bigger(int a,int b){…}