早教吧 育儿知识 作业答案 考试题库 百科 知识分享

c++运算符的重载定义一个类MatrixAdd,其数据成员为一个M*N的矩阵(即二维数组),其中M和N是两个预先定义的符号常数。通过重载运算符”+”和”=”,实现矩阵相加和赋值运算。如定义矩阵

题目详情
c++运算符的重载
定义一个类MatrixAdd,其数据成员为一个M*N的矩阵(即二维数组),其中M和N是两个预先定义的符号常数。通过重载运算符”+”和”=”,实现矩阵相加和赋值运算。如定义矩阵A=
1 2 3
4 5 6
和B=
2 2 2
3 3 3
, 通过运算C=A+B,得到结果矩阵
C=
3 4 5
7 8 9

具体要求如下:
(1)私有数据成员
l int a[M][N]:存放二维数组值。
(2)公有成员函数
l MatrixAdd ( ):缺省构造函数,空操作。
l MatrixAdd ( int x[M][N]):构造函数,用x初始化数据成员a。
l MatrixAdd operator+(MatrixAdd &b):重载加法运算符”+”,实现两个矩阵相加。
l void operator=(MatrixAdd &b):重载赋值运算符”=”,实现两个矩阵赋值。
l void show( ):按二维方式输出a数组。
(3)在主函数中完成对该类的测试。注意:在程序的开头,定义符号常数M和N的值分别为2和3,表示二维数组的行数和列数。在主函数中定义整型数组a[M][N]和b[M][N],它们的初值取上述示例值。定义三个Matrix类的对象A、B和C,并用数组a和b初始化对象A和B。将A加B后赋值给C。然后输出对象C的数据成员a矩阵的值。
▼优质解答
答案和解析

代码如下 供参考

#include <iostream>
using namespace std;
const int M = 2;
const int N = 3;
class MatrixAdd
{
private:
int a[M][N];
public:
MatrixAdd (){}
MatrixAdd ( int x[M][N])
{
int i,j;
for(i = 0; i < M; i ++)
for(j = 0; j < N; j ++)
a[i][j] = x[i][j];
}
MatrixAdd operator+(MatrixAdd &b)
{
MatrixAdd t;
int i,j;
for(i = 0; i < M; i ++)
for(j = 0; j < N; j ++)
t.a[i][j] = a[i][j] + b.a[i][j];
return t;
}
 void operator=(MatrixAdd b)
 {
int i,j;
for(i = 0; i < M; i ++)
for(j = 0; j < N; j ++)
a[i][j] = b.a[i][j];
 }
 void show( )
 {
int i,j;
for(i = 0; i < M; i ++)
{
for(j = 0; j < N; j ++)
cout << a[i][j] << '\t';
cout << endl;
}
 }
};
int main()
{
int a[M][N] = {{1,2,3},{4,5,6}};
int b[M][N] = {{2,2,2},{3,3,3}};
MatrixAdd A(a), B(b),C;
C = (A +B);
C.show();
return 0;
}