C++中,对象当成是参数,会调用复制构造函数么?
Aa;Ab(a);这个时候是调用复制构造函数来构造b对象。那如果说,A类种我自定义了一个构造函数,它的参数就是A类对象。那么我Ab(a);这个时候,是调用复制构造函数呢,...
A a ;
A b (a);
这个时候是调用复制构造函数来构造b对象。
那如果说,A类种我自定义了一个构造函数,它的参数就是A 类对象。
那么我 A b (a); 这个时候,是调用复制构造函数呢,还是调用自定义的那个构造函数呢? 展开
A b (a);
这个时候是调用复制构造函数来构造b对象。
那如果说,A类种我自定义了一个构造函数,它的参数就是A 类对象。
那么我 A b (a); 这个时候,是调用复制构造函数呢,还是调用自定义的那个构造函数呢? 展开
2个回答
展开全部
如果你自定义了一个参数为 const A &的A的构造函数,这个就是一个你定义的复制构造函数。不写的话会调用默认的。
如果类里面有动态分配内容(指针),就需要自己定义拷贝构造函数,分配内存。
如果类里面有动态分配内容(指针),就需要自己定义拷贝构造函数,分配内存。
更多追问追答
追问
一个是接受对象的引用 A & , 一个是接受对象 A
那么当传入对象时,是调用哪个函数呢?
追答
拷贝构造函数是 const A& 参数的,如果加入 A 参数的,会引起混淆。所以说,应该只有 const A& 一种构造函数。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
当然是调用复制构造函数啦,当然这个复制构造函数必须自己定义。
更多追问追答
追问
为什么呢?为什么不是构造函数呢?
就是说函数重载,一个是接受对象的引用 A & , 一个是接受对象 A
那么当传入对象时,是调用哪个函数呢?
追答
构造函数的参数和复制构造函数的参数类型是不同的,参数是同类型对象的函数一定是复制构造函数。
既然定义了MyClass(MyClass &),为什么还要定义MyClass(MyClass)呢,一来会引起二义性,二来第二个函数是冗余的。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询