前置双摄 C 运算符重载=号时,为什么返回值要用引用?而冲在重载 号时不需要?
C 运算符重载=号时,为什么返回值要用引用?而冲在重载 号时不需要?一般来说,这里返回引用的主要目的是实现级联操作,但是这里使用引用主要是为了提高效率。例如,表达式a=b=C是合法的,因为它可以被视
C 运算符重载=号时,为什么返回值要用引用?而冲在重载 号时不需要?
一般来说,这里返回引用的主要目的是实现级联操作,但是这里使用引用主要是为了提高效率。例如,表达式a=b=C是合法的,因为它可以被视为a=(b=C),b=C返回对b的引用。至于为什么不使用值传递,这是效率问题。在a=B中,很明显B只需要提供B的每个成员变量,不需要生成B的副本,同样,返回值是连续操作的,因此不需要生成新的副本,通过引用传递可以避免无用的副本。例如,对于一个有1000000个元素的单链接表,a=B只需要复制一次,而值转移只需要复制三次,这显然不划算。另外,为了安全起见,consta&;operator=(consta&){}通常是这样写的,因为不应该更改这些引用的属性。