c++學習筆記之運算子的過載
阿新 • • 發佈:2019-01-01
運算子的過載包括雙目運算子+的過載和輸入輸出流運算子的過載。
程式碼的功能是實現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; }