早教吧作业答案频道 -->其他-->
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矩阵的值。
定义一个类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;
}
看了 c++运算符的重载定义一个类...的网友还看了以下:
51单片机的程序问题将累加器A中低四位的状态,通过P1口的高4位输出.ANLA,#0FH;屏蔽A. 2020-06-07 …
单片机求解、将累加器A中的十六进制数转换为ASCII码。查ASCII码表可知:数字0~9的ASCI 2020-06-09 …
问一道单片机汇编的题目,设累加器A中为无符号数,B中数为2,下列指令D的作用与其它几条不同.A.A 2020-06-23 …
单片机编程填空会的快来1.RAM中45H单元内存有一个十六进制数,把这个数转换为BCD码的十进制数 2020-07-01 …
和差结果的整式次数不会与()参加运算中次数()的那个整式的次数项数不会超过两整式的项数之() 2020-07-11 …
某学习小组为了探究Fe(NO3)3的热稳定性和氧化性,设计如下实验:实验(一):热稳定性利用如图装 2020-07-29 …
设X在累加器A中(0≤X≤20),求X2并将平方数高位存放在R7中,低位存放在R6中.试用查表法编 2020-07-31 …
微机原理设累加器A中为无符号数,B中数为2,下列指令中与其它几条指令具有不同功能的一条指令是:A:A 2020-12-12 …
累加器ACC.7的作用是什么啊?ACC.7为是0或者1又有什么区别,是不是和此时累加器A中书的符号有 2021-01-15 …
两种失去标签的化肥A和B,可能是NH4HCO3,NH4Cl,KNO3,K2CO3中的某两种,某同学做 2021-02-01 …