C++中,对象当成是参数,会调用复制构造函数么?

Aa;Ab(a);这个时候是调用复制构造函数来构造b对象。那如果说,A类种我自定义了一个构造函数,它的参数就是A类对象。那么我Ab(a);这个时候,是调用复制构造函数呢,... A a ;
A b (a);
这个时候是调用复制构造函数来构造b对象。

那如果说,A类种我自定义了一个构造函数,它的参数就是A 类对象。
那么我 A b (a); 这个时候,是调用复制构造函数呢,还是调用自定义的那个构造函数呢?
展开
 我来答
何灵渊
2013-07-18 · TA获得超过1673个赞
知道大有可为答主
回答量:1261
采纳率:0%
帮助的人:1049万
展开全部
如果你自定义了一个参数为 const A &的A的构造函数,这个就是一个你定义的复制构造函数。不写的话会调用默认的。
如果类里面有动态分配内容(指针),就需要自己定义拷贝构造函数,分配内存。
更多追问追答
追问
一个是接受对象的引用 A & ,  一个是接受对象 A

那么当传入对象时,是调用哪个函数呢?
追答
拷贝构造函数是 const A& 参数的,如果加入 A 参数的,会引起混淆。所以说,应该只有 const A& 一种构造函数。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-07-18 · TA获得超过8607个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3416万
展开全部
当然是调用复制构造函数啦,当然这个复制构造函数必须自己定义。
更多追问追答
追问
为什么呢?为什么不是构造函数呢?

就是说函数重载,一个是接受对象的引用 A & , 一个是接受对象 A

那么当传入对象时,是调用哪个函数呢?
追答
构造函数的参数和复制构造函数的参数类型是不同的,参数是同类型对象的函数一定是复制构造函数。

既然定义了MyClass(MyClass &),为什么还要定义MyClass(MyClass)呢,一来会引起二义性,二来第二个函数是冗余的。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式