我在写矩阵的类,然后重载加法运算的时候出问题了……RE
#include<iostream>
using namespace std;
class Matrix{
public:
int row,col;
int **mat;
Matrix(int n,int m){
this->row=n,this->col=m;
this->mat=new int*[n+1];
for(int i=1;i<=n;i++){
this->mat[i]=new int[m+1];
}
}
Matrix(const Matrix &x){
for(int i=0;i<=this->row;i++){
delete[] this->mat[i];
}
delete[] mat;
this->row=x.row,this->col=x.col;
this->mat=new int*[row+1];
for(int i=1;i<=this->row;i++){
this->mat[i]=new int[col+1];
for(int j=1;j<=this->col;j++){
this->mat[i][j]=x.mat[i][j];
}
}
}
~Matrix(){
for(int i=0;i<=this->row;i++){
delete[] this->mat[i];
}
delete[] mat;
}
Matrix operator+(const Matrix& x) const{
if(x.row!=this->row||x.col!=this->col){
return *this;
}
Matrix c(x.row,x.col);
for(int i=1;i<=this->row;i++){
for(int j=1;j<=this->col;j++){
c.mat[i][j]=this->mat[i][j]+x.mat[i][j];
}
}
c.printMat();
return c;
}
// void left_time(Matrix *x){
//
// }
void printMat(){
for(int i=1;i<=this->row;i++){
for(int j=1;j<=this->col;j++){
cout<<this->mat[i][j]<<' ';
}
cout<<'\n';
}
}
};
int main(){
Matrix mat1(3,3),mat2(4,3);
for(int i=1;i<=3;i++){
for(int j=1;j<=3;j++){
cin>>mat1.mat[i][j];
}
}
Matrix mat3(3,2);
mat2=mat1;
mat3=mat1;
Matrix mat4(3,3);
mat3+mat2;
mat2.printMat();
return 0;
}
问题就是重载运算符中return c
这条语句……就会出错,但我不知道到底为啥出错了。
求助qwq