1. 程式人生 > >c++學習筆記之運算子的過載

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;
}