为什么复制构造函数的参数要用引用类型来传递?

来源:百度知道 编辑:UC知道 时间:2024/05/19 03:39:42

复制构造函数要用引用参数一个重要的原因就是:避免递归调用!从语言规范的角度来说,这只是一种规定。
比如&b=a
表明b是a 的一个引用

从逻辑的角度来说,因为从参数的传递本身就是复制。如果不使用引用类型,复制构造函数传递参数时又会调用拷贝构造函数,造成递归调用了。故用引用类型来传递。

引用就相当于取一个别名
传递的时候不容易出错

实际上引用传递也是地址传递比如&b=a
表明b是a 的一个引用
在函数调用的时候
实参传递给形参,引用的两个参数是占用同一段内存单元的,不像指针那样形参要占用别的内存单元

复制构造函数要用引用参数一个重要的原因就是:避免递归调用!
如果定义如下的构造函数:
Comp::Comp(Comp rhs);
那么当用一个Comp对象初始化另一个Comp对象时,如
Comp abc=ab;//假设bc是一个已存在的Comp对象
该复制构造函数就会被无限制地递归下去:调用Comp(Comp)初始化第一层的参数,然后……