有两个矩阵a,b;均为两行三列,求两个矩阵之和,重载运算符“+“使之能用于该矩阵的输入与输出,比如 c = a+b;
在编译过程中遇到VC6.0的著名bug( fatal error C1001: INTERNAL COMPILER ERROR),与friend有关,我这里就用简单方法,把#include using namespace std;注释,换成了#include <iostream.h>
//#include<iostream>
//using namespace std;
#include <iostream.h>
class Matrix
{
public:
Matrix(); //默认构造函数
friend Matrix operator+(Matrix &,Matrix &);
void input();
void display();
private:
int mat[2][3];
};
Matrix::Matrix()
{
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
mat[i][j] = 0;
}
}
Matrix operator+(Matrix &a,Matrix &b)
{
Matrix c;
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
c.mat[i][j] = a.mat[i][j] +b.mat[i][j];
}
return c;
}
void Matirx::input()
{
cout<<"Please input the data of the matrix :"<<endl;
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
cin>>mat[i][j];
}
}
void Matirx::display()
{
for (int i=0;i<2;i++)
{
for (int j=0;j<3;j++)
{
cout<<mat[i][j]<<" ";
}
cout<<endl;
}
}
int main()
{
Matrix a,b,c;
a.input();
b.input();
cout<<endl<<"Matirx a:"<<endl;
a.display();
cout<<endl<<"Matrix b:"<<endl;
b.display();
c= a+b;
cout<<endl<<"Matrix c:(used for the sum of a and b;)"<<endl;
c.display();
return 0;
}
在上面的基础上,重载流插入运算符“<<“和流提取运算符”>>“,使之能用于该矩阵的输入输出;
#include <iostream.h>
//#include<iostream>
//using namespace std;
class Matrix
{
public:
Matrix(); //默认构造函数
friend Matrix operator+(Matrix &,Matrix &);
friend ostream& operator<<(ostream &,Matrix &);
friend istream& operator>>(istream &,Matrix &);
private:
int mat[2][3];
};
Matrix::Matrix()
{
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
mat[i][j] = 0;
}
}
Matrix operator+(Matrix &a,Matrix &b)
{
Matrix c;
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
c.mat[i][j] = a.mat[i][j] +b.mat[i][j];
}
return c;
}
istream& operator>>(istream &in,Matrix &m)
{
cout<<"Please input the data of the matrix :"<<endl;
for (int i=0;i<2;i++)
for (int j=0;j<3;j++)
{
in>>m.mat[i][j];
}
return in;
}
ostream& operator<<(ostream &out,Matrix &m)
{
cout<<"Please output the data of the matrix :"<<endl;
for (int i=0;i<2;i++)
{ for (int j=0;j<3;j++)
{
out<<m.mat[i][j]<<" ";
}
out<<endl;
}
return out;
}
int main()
{
Matrix a,b,c;
cin>>a;
cin>>b;
cout<<endl<<"the matrix a:"<<a<<endl;
cout<<endl<<"the matrix b:"<<b<<endl;
c= a+b;
cout<<endl<<"the matrix c:"<<c<<endl;
return 0;
}
运行结果如下: