
为什么复制构造函数的参数要用引用类型来传递? 5
3个回答
展开全部
复制构造函数要用引用参数一个重要的原因就是:避免递归调用!从语言规范的角度来说,这只是一种规定。
比如&b=a
表明b是a 的一个引用
从逻辑的角度来说,因为从参数的传递本身就是复制。如果不使用引用类型,复制构造函数传递参数时又会调用拷贝构造函数,造成递归调用了。故用引用类型来传递。
比如&b=a
表明b是a 的一个引用
从逻辑的角度来说,因为从参数的传递本身就是复制。如果不使用引用类型,复制构造函数传递参数时又会调用拷贝构造函数,造成递归调用了。故用引用类型来传递。
展开全部
复制构造函数要用引用参数一个重要的原因就是:避免递归调用!
如果定义如下的构造函数:
Comp::Comp(Comp rhs);
那么当用一个Comp对象初始化另一个Comp对象时,如
Comp abc=ab;//假设bc是一个已存在的Comp对象
该复制构造函数就会被无限制地递归下去:调用Comp(Comp)初始化第一层的参数,然后……
如果定义如下的构造函数:
Comp::Comp(Comp rhs);
那么当用一个Comp对象初始化另一个Comp对象时,如
Comp abc=ab;//假设bc是一个已存在的Comp对象
该复制构造函数就会被无限制地递归下去:调用Comp(Comp)初始化第一层的参数,然后……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
引用就相当于取一个别名
传递的时候不容易出错
实际上引用传递也是地址传递比如&b=a
表明b是a 的一个引用
在函数调用的时候
实参传递给形参,引用的两个参数是占用同一段内存单元的,不像指针那样形参要占用别的内存单元
传递的时候不容易出错
实际上引用传递也是地址传递比如&b=a
表明b是a 的一个引用
在函数调用的时候
实参传递给形参,引用的两个参数是占用同一段内存单元的,不像指针那样形参要占用别的内存单元
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询