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

为什么我用&tmp却通过了?区别是什么?

为什么我用&tmp却通过了?区别是什么?

陪伴而非守候 2022-07-08 11:07:24
如题Matrix::Matrix(Matrix tmp){y=tmp.y;x=tmp.x;M=new int *[y];for(int yy=0;yy<y;yy++)M[yy]=new int[x];for(yy=0;yy<y;yy++)for(int xx=0;xx<x;xx++)M[yy][xx]=tmp.M[yy][xx];}我用tmp时不通过Matrix::Matrix(Matrix &tmp){y=tmp.y;x=tmp.x;M=new int *[y];for(int yy=0;yy<y;yy++)M[yy]=new int[x];for(yy=0;yy<y;yy++)for(int xx=0;xx<x;xx++)M[yy][xx]=tmp.M[yy][xx];}
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

首先,这是一个拷贝构造函数。
拷贝构造函数的作用就是通过另外一个本类类型的对象来创建一个对象,如果不带&那么调用拷贝构造函数时,而拷贝构造函数本身是值传递,形实结合的时候,又要调用拷贝构造函数,这样就是一个死循环。所以拷贝构造函数的参数一定是引用,不能是对象。

查看完整回答
反对 回复 2022-07-11
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号