永发信息网

为什么复制构造函数的形参必须是一个引用?

答案:5  悬赏:40  手机版
解决时间 2021-04-14 14:23
查了资料 说是会导致复制构造函数的无穷递归调用。但是还是不是很理解。。。。。。。哪位高手能用原创的语言来讲解一下。。先谢谢了。
最佳答案

水煮鱼讲的很好了。如果你实在不懂可以先记住,等等时间长了,知识丰富了自然就了解了。。。。

全部回答
构造函数名是一个指针变量,该变量指向的是一块内存区域

人家规定这样就是这样咯

1、一个类型foo,两个foo类型对象a,b; 2、a已经构造完毕; 3、b从a复制构造; 4、复制构造函数foo( foo b ); 5、对象b的创建过程:foo b( a );此时调用b的复制构造函数; 6、由于按值传递,所以从实参a变为形参b需要先从a复制构造形参b; 7、回到步骤3 。。。。
会造成死循环,无限递归 你要理解,函数调用时发生的事情 复制构造函数,其实也是一个函数,如果你给它定义的参数,是一个类型,而不是一个类型的引用,它会首先调用该类型的复制构造函数,重新构造一个新的实例,就像下面一个例子 class myclass 这是一个简单的类 {}; int fun(myclass a); // 这是一个函数 当你调用它时,编译器会自动调用 myclass 类型的构造函数,重新实例化一个myclass的实例 int fun(myclass &a) //这个函数,就不会调用myclass类型的构造函数,只是传递一个指针 好了~现在回到你的问题,赋值构造函数也是构造函数的一种,你给它一个非引用,非指针的参数,它一定会调用该类型的构造函数 这下好了~一个函数不断的调用自己,这样能不出错,能不堆栈溢出么? 简化起来,事情就像这个样子 int fun(myclass a) { fun(a); } // 你说这个函数会有结束的那一天吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
矮的短的用英语怎么说,又光滑又硬的英语怎么
爱的教育,最喜欢的一则日记。简评其内容及理
QQ飞车如何起步最快?
神乐真的死了?
孟庭苇和阎学晶长得像吗
梁博和黄勇谁唱的好
地下城气功师刷图评分基本上是什么
在哪更改手机QQ斗地主上的头像
单选题Opinionsonhowtodealwiththecapture
如何使用支付宝交水费,我家支付宝交不了水费
金塔刘家纯手工酿皮在哪里啊,我有事要去这个
大学生应具备的礼仪修养有哪些?一条一条的有
急求一个能懂肝方面的医生. 我想知道晚期换肝
人群怎么画
祝福小说中的她是谁,如果一个女学生给男学生
推荐资讯
正版魔域里面的QQ魔域分区爆魔石吗?
今年265分在广西想报工程造价有哪个学校能收
正宗温州骨肉香烤鸡店在什么地方啊,我要过去
单选题人体呼出的气体与外界环境中的气体的区
怎么样才可以找回QQ的问题和密码?
请教Mate7怎么升级到EMUI5.0
凯里西出口(G60沪昆高速东向)我想知道这个在
皮肤有关的
中国,什么时候才会实习十二年义务制教育
什么是电子档!怎么制作?能不能发给我一个
竖直向上发射一枚火箭速度为1m每秒,多少时间
我的电脑开机时会嗡嗡的响
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?