参数为引用,不为值传递是为了防止拷贝构造函数的无限递归,最终导致栈溢出。
如果复制构造函数是这样的 :
test(test t);
我们调用
test ort;test a(ort); --> test.a(test t=ort)==test.a(test t(ort))-->test.a(test t(test t = ort))==test.a(test t(test t(ort)))-->test.a(test t(test t(test t=ort)))- ...
就这样会一直无限递归下去。
而运算符=的重载函数参数不一定为引用,但若为引用则可减少一次复制构造函数的调用,有利于提高效率,因此建议运算符=重载函数的参数也为引用。
本文解释了为什么参数选择引用而非值传递可以避免拷贝构造函数的无限递归问题,进而防止栈溢出。同时介绍了运算符=重载时使用引用参数的好处。
1313

被折叠的 条评论
为什么被折叠?



