关于拷贝(复制)构造函数为什么不能用值传递

 我来答
唯爱一萌744536
2013-11-02 · TA获得超过139个赞
知道答主
回答量:135
采纳率:0%
帮助的人:74.5万
展开全部
当你尝试着把拷贝构造函数写成值传递的时候,会发现编译都通不过,错误信息如下: error: invalid constructor; you probably meant 'S (const S&)' (大致意思是:无效的构造函数,你应该写成。。。) 如果真是产生死循环这个原因的话,应该是这样子的: #include<iostream using namespace std;class S{int a;public: S(int x):a(x){} S(const S st){this-a=st.a;}//拷贝构造函数};int main(){S s1(2);S s2(s1);return 0;} 当给s2初始化的时候调用了s2的拷贝构造函数,由于是值传递, 系统会给形参st重新申请一段空间,然后调用自身的拷贝构造函数把s1的数据成员的值传给st。当调用自身的拷贝构造函数的时候又因为是值传递,所以。。。 也就是说,只要调用拷贝构造函数,就会重新申请一段空间,只要重新申请一段空间,就会调用拷贝构造函数,这样一直下去就形成了一个死循环。 所以拷贝构造函数一定不能是值传递。作者 c小加
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式