5.在第4题的基础上,重载流插入运算符
程序员文章站
2022-07-15 16:50:50
...
/*
4.有两个矩阵a和b,均为2行3列。求两个矩阵之和。
重载运算符“ + ”,使之能用于知阵相加。
如:c = a + b。
5.在第4题的基础上,重载流插入运算符“<<”和流提取运算符“>>”,使之能用于该矩阵的输入和输出。
*/
#include <iostream>
using namespace std;
//矩阵类
class Matrix {
public:
//无参构造函数
Matrix();
//输入矩阵
void input();
//使用重载操作符operator重载运算符‘+’
friend Matrix operator+(Matrix& a, Matrix& b);
friend istream& operator>>(istream&, Matrix&);
friend ostream& operator<<(ostream&, Matrix&);
private:
//2行3列矩阵存储在该二维数组中
int a[2][3] = {0};
};
Matrix::Matrix() {
}
void Matrix::input() {
int i, j;
cout << "输入矩阵():" << endl;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
cin >> a[i][j];
}
//重载 ‘+’
Matrix operator+(Matrix& a, Matrix& b) {
//new一个矩阵对象c
Matrix c;
int i, j;
//把两个数组的值逐行按照顺序对应相加后赋值给c的数组
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++) {
c.a[i][j] = a.a[i][j] + b.a[i][j];
}
//返回一个矩阵类型,c.a[][]即相加后的结果
return c;
}
//重载>>输入
istream& operator>>(istream& in, Matrix& m)
{
cout << "输入矩阵():" << endl;
for (int i = 0; i < 2; i++)
for (int j = 0; j < 3; j++) {
in >> m.a[i][j];
}
return in;
}
//重载<<输出
ostream& operator<<(ostream& out, Matrix& m)
{
cout << "此矩阵为:" << endl;
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 3; j++)
{
out << m.a[i][j] << " ";
}
out << endl;
}
return out;
}
int main() {
Matrix a, b, c;
cin >> a;
cin >> b;
c = a + b;
cout<<c;
return 0;
}
上一篇: c++:实现公司员工计算薪资功能
下一篇: C++中那些不得不说的类继承
推荐阅读