前置雙攝 C 運(yùn)算符重載=號時,為什么返回值要用引用?而沖在重載 號時不需要?
C 運(yùn)算符重載=號時,為什么返回值要用引用?而沖在重載 號時不需要?一般來說,這里返回引用的主要目的是實(shí)現(xiàn)級聯(lián)操作,但是這里使用引用主要是為了提高效率。例如,表達(dá)式a=b=C是合法的,因?yàn)樗梢员灰?/p>
C 運(yùn)算符重載=號時,為什么返回值要用引用?而沖在重載 號時不需要?
一般來說,這里返回引用的主要目的是實(shí)現(xiàn)級聯(lián)操作,但是這里使用引用主要是為了提高效率。例如,表達(dá)式a=b=C是合法的,因?yàn)樗梢员灰暈閍=(b=C),b=C返回對b的引用。至于為什么不使用值傳遞,這是效率問題。在a=B中,很明顯B只需要提供B的每個成員變量,不需要生成B的副本,同樣,返回值是連續(xù)操作的,因此不需要生成新的副本,通過引用傳遞可以避免無用的副本。例如,對于一個有1000000個元素的單鏈接表,a=B只需要復(fù)制一次,而值轉(zhuǎn)移只需要復(fù)制三次,這顯然不劃算。另外,為了安全起見,consta&;operator=(consta&){}通常是這樣寫的,因?yàn)椴粦?yīng)該更改這些引用的屬性。