关于重载运算符
  • 板块灌水区
  • 楼主岱山独尊
  • 当前回复22
  • 已保存回复22
  • 发布时间2021/8/8 00:30
  • 上次更新2023/11/4 11:40:31
查看原帖
关于重载运算符
159110
岱山独尊楼主2021/8/8 00:30

我在写矩阵的类,然后重载加法运算的时候出问题了……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

2021/8/8 00:30
加载中...