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