如題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
提交
取消