运算符的重载包括双目运算符+的重载和输入输出流运算符的重载。
代码的功能是实现2行3列矩阵的加法
代码如下
#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<<"input value of 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)//定义运算符“<<”的重载函数
{
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<<"matrix a:"<<endl<<a<<endl;//用cout输出矩阵,系统可根据上下文自动判断新定义的cout和原来的cout
cout<<endl<<"matrix a:"<<endl<<a<<endl;
c=a+b;
cout<<endl<<"matrix c=matrix a+matrix b"<<endl<<c<<endl;
return 0;
}