拷贝构造函数自己的参数必须是引用类型?

拷贝构造函数自己的参数必须是引用类型?
答案是肯定的,如若不是本参数的引用类型,则会造成死循环,无限递归。因为函数调用过程为:复制构造函数,其实也是一个函数,如果你给它定义的参数,是一个类型,而不是一个类型的引用,它会首先调用该参数的类型的复制构造函数,重新构造一个新的实例,而参数类型的构造函数就是我们刚刚定义的复制构造函数,这样便造成了递归。
例子:

/拷贝构造  
 CExample(const CExample& C)  
 {  
  a = C.a;  
 }  

 CExample A(100);  
CExample B = A;  

拷贝的过程:
(1)A对象传入形参时,会先会产生一个临时变量,就叫 C 吧。
(2).然后调用拷贝构造函数把A的值给C。 整个这两个步骤有点像:CExample C(A);
(3).等拷贝函数执行完后, 析构掉 C 对象。
如参数类型不是引用类型,拷贝构造函数传递参数时又会调用拷贝构造函数,造成循环调用。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值