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