如何重载输入输出流(<<、>>)

来源:互联网 发布:linux新建 删除文件夹 编辑:程序博客网 时间:2024/05/16 18:57

如何重载输入输出流?

Description

有两个矩阵ab,均为23列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加(如c=a+b)。
重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。

Input

两个23列矩阵

Output

矩阵之和

Sample Input

1 2 3

4 5 6

 

7 8 9

1 2 3

Sample Output

8 10 12

5 7 9



 

#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(){int i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)mat[i][j]=0;}Matrix operator+(Matrix &a,Matrix &b){Matrix c;int i,j;   for(i=0;i<2;i++)   for(j=0;j<3;j++)   c.mat[i][j]=a.mat[i][j]+b.mat[i][j];//遗漏点:.mat   return c;//}ostream& operator<<(ostream &output,Matrix &c)//ostream类对象output{int i,j;for(i=0;i<2;i++){for(j=0;j<3;j++){output<<c.mat[i][j];//.matif(j!=2) output<<' ';}output<<endl;}return output;//返回}istream& operator>>(istream &in,Matrix &c) //istream类对象in{int i,j;for(i=0;i<2;i++)for(j=0;j<3;j++)in>>c.mat[i][j];return in;//返回} int main(){    Matrix a,b,c;    cin>>a;    cin>>b;    c=a+b;    cout<<c<<endl;    return 0;}




 

0 0