#include<iostream.h>
#include<iomanip.h>
class Matrix {
public:
Matrix(); //构造函数
friend Matrix operator+(Matrix&,Matrix&); //声明重载运算符"+"
friend istream& operator>>(istream&,Matrix&); //">>"
friend ostream& operator<<(ostream&,Matrix&); //"<<"
private:
int m[2][4];
};
Matrix::Matrix()
{
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
m[i][j]=0;
}
Matrix operator+(Matrix& a,Matrix& b) //定义运算符"+"的重载函数
{
Matrix c;
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
{
c.m[i][j]=a.m[i][j]+b.m[i][j];
}
return c;
}
istream& operator>>(istream&in,Matrix&n) //">>"
{
for(int i=0;i<2;i++)
for(int j=0;j<4;j++)
in>>n.m[i][j];
return in;
}
ostream& operator<<(ostream&out,Matrix&n) //"<<"
{
for(int i=0;i<2;i++)
{
for(int j=0;j<4;j++)
{
out<<n.m[i][j]<<'\t';
}
out<<endl;
}
return out;
}
int main()
{
Matrix a,b,c;
cout<<"Please input Matrix a:"<<endl;
cin>>a;
cout<<"Please inout Matrix b:"<<endl;
cin>>b;
cout<<"Matrix a:"<<'\n'<<a<<endl;
cout<<"Matrix b:"<<'\n'<<b<<endl;
c=a+b;
cout<<"Matrix c= Matrix a+ Matrix b:"<<'\n'<<c<<endl;
return 0;
}
在编译中出现错误:
后发现是因为我把运算符函数重载为友元函数,却忘记在头文件中加上后缀“.h”所引起的编译出错,修改后程序运行顺利。