c++学习笔记之运算符的重载

运算符的重载包括双目运算符+的重载和输入输出流运算符的重载。

代码的功能是实现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;
}

猜你喜欢

转载自blog.csdn.net/qq_24163555/article/details/84446047