为了账号安全,请及时绑定邮箱和手机立即绑定

为什么复制构造函数应该接受C+中引用的参数?

为什么复制构造函数应该接受C+中引用的参数?

C++
不负相思意 2019-07-19 16:45:55
为什么复制构造函数应该接受C+中引用的参数?为什么复制构造函数必须通过引用传递其参数?
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

因为如果不是参考的话,那就是价值。要做到这一点,您可以创建一个副本,并为此调用复制构造函数。但是要做到这一点,我们需要创建一个新的值,所以我们调用复制构造函数,以此类推.

(您将有无限递归,因为“要复制,就需要复制”)。


查看完整回答
反对 回复 2019-07-19
?
慕容708150

TA贡献1831条经验 获得超4个赞

参考传递的另一种选择是按值传递。按价值传递实际上是一份的文件。复制构造函数用于复制。

如果您必须创建一个副本来调用复制构造函数,这将是一个难题。

(我认为在编译器中会出现无限递归,您永远不会得到这样的程序。)

除了理性理由,这是第12.8/3节中的标准所禁止的:

如果类X的第一个参数是类型(可选cv限定的)X,并且没有其他参数,或者所有其他参数都有默认参数,则类X的构造函数的声明是不正确的。


查看完整回答
反对 回复 2019-07-19
  • 3 回答
  • 0 关注
  • 498 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信