主题:c++运算符重载问题,非常急
#include <iostream>
using namespace std;
重载运算符实现矩阵加减法,请高手帮我看看为什么出现运行错误,感激不尽,该怎样修改
class Matrix
{
private:
int row,line;
float **p;
public:
Matrix(int r=0,int l=0)
{
row=r,line=l;
p=new float*[line];
if(!p)
{
cout<<"未申请到动态内存空间!";
exit(1);
}
for(int i=0;i<line;i++)
{
p[i]=new float[row];
if(!p[i])
{
cout<<"未申请到动态内存空间!";
exit(1);
}
for(int j=0;j<row;j++)
{
p[i][j]=0;
}
}
}
void setMatrix()
{
for(int i=0;i<line;i++)
{
cout<<"输入第"<<i+1<<"行:";
for(int j=0;j<row;j++)
cin>>p[i][j];
}
}
Matrix operator+(Matrix m)
{
Matrix plusTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
plusTempt.p[i][j]=p[i][j]+m.p[i][j];
return plusTempt;
}
Matrix operator-(Matrix m)
{
Matrix minusTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
minusTempt.p[i][j]=p[i][j]-m.p[i][j];
return minusTempt;
}
Matrix operator=(Matrix m)
{
Matrix equalTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
{
p[i][j]=m.p[i][j];
equalTempt.p[i][j]=p[i][j];
}
return equalTempt;
}
void mShow()
{
for(int i=0;i<line;i++)
{
cout<<endl;
for(int j=0;j<row;j++)
cout<<p[i][j]<<" ";
}
cout<<endl;
}
~Matrix()
{
for(int i=0;i<line;i++) delete p[i];
delete p;
}
};
int main(void)
{
Matrix m1(2,2),m2(2,2),m3(2,2);
m1.setMatrix();m1.mShow();
m2.setMatrix();m2.mShow();
m3=m2+m1;m3.mShow();
m3=m2-m1;m3.mShow();
return 0;
}
using namespace std;
重载运算符实现矩阵加减法,请高手帮我看看为什么出现运行错误,感激不尽,该怎样修改
class Matrix
{
private:
int row,line;
float **p;
public:
Matrix(int r=0,int l=0)
{
row=r,line=l;
p=new float*[line];
if(!p)
{
cout<<"未申请到动态内存空间!";
exit(1);
}
for(int i=0;i<line;i++)
{
p[i]=new float[row];
if(!p[i])
{
cout<<"未申请到动态内存空间!";
exit(1);
}
for(int j=0;j<row;j++)
{
p[i][j]=0;
}
}
}
void setMatrix()
{
for(int i=0;i<line;i++)
{
cout<<"输入第"<<i+1<<"行:";
for(int j=0;j<row;j++)
cin>>p[i][j];
}
}
Matrix operator+(Matrix m)
{
Matrix plusTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
plusTempt.p[i][j]=p[i][j]+m.p[i][j];
return plusTempt;
}
Matrix operator-(Matrix m)
{
Matrix minusTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
minusTempt.p[i][j]=p[i][j]-m.p[i][j];
return minusTempt;
}
Matrix operator=(Matrix m)
{
Matrix equalTempt(2,2);
for(int i=0;i<line;i++)
for(int j=0;j<row;j++)
{
p[i][j]=m.p[i][j];
equalTempt.p[i][j]=p[i][j];
}
return equalTempt;
}
void mShow()
{
for(int i=0;i<line;i++)
{
cout<<endl;
for(int j=0;j<row;j++)
cout<<p[i][j]<<" ";
}
cout<<endl;
}
~Matrix()
{
for(int i=0;i<line;i++) delete p[i];
delete p;
}
};
int main(void)
{
Matrix m1(2,2),m2(2,2),m3(2,2);
m1.setMatrix();m1.mShow();
m2.setMatrix();m2.mShow();
m3=m2+m1;m3.mShow();
m3=m2-m1;m3.mShow();
return 0;
}