如题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个赞
首先,这是一个拷贝构造函数。
拷贝构造函数的作用就是通过另外一个本类类型的对象来创建一个对象,如果不带&那么调用拷贝构造函数时,而拷贝构造函数本身是值传递,形实结合的时候,又要调用拷贝构造函数,这样就是一个死循环。所以拷贝构造函数的参数一定是引用,不能是对象。
添加回答
举报
0/150
提交
取消