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

C++运算符重载为成员函数、友元函数问题1)设计一个矩阵类matrix,并定义其构造函数用于对象初始化(2)在此类中以成员函数的形式重载“+”运算符实现两个矩阵求和。(3)在main函数中

题目详情
C++运算符重载为成员函数、友元函数问题
1)设计一个矩阵类matrix,并定义其构造函数用于对象初始化
(2)在此类中以成员函数的形式重载“+”运算符实现两个矩阵求和。
(3)在main函数中定义两个矩阵对象,求两个矩阵的和
之后
(4)在此类中以友元函数的形式重载“+”运算符实现两个矩阵求和。
(3)在main函数中定义两个矩阵对象,求两个矩阵的和
求解34
▼优质解答
答案和解析

哎,,,叫你求助我又不求助,无语

其实我早写好了

我的重载为-,如果你改+,就把之前的重载删除,就可以了

#include<iostream>
#define MAX 10
using namespace std;
class matrix;
matrix& operator-(matrix& b,const matrix& c);
class matrix
{
private:
    int row,col,(*a)[MAX];
public:
    matrix(){}
    matrix(int r,int c,int (*b)[MAX]):row(r),col(c),a(b){}
    matrix& operator+(const matrix& b)
    {
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                a[i][j]=a[i][j]+b.a[i][j];
        return *this;
    }
    friend matrix& operator-(matrix& b,const matrix& c)
    {
           for(int i=0;i<b.row;i++)
            for(int j=0;j<b.col;j++)
             b.a[i][j]=b.a[i][j]-c.a[i][j];
        return b;
    }
    void show()
    { 
          for(int i=0;i<row;i++)
        {
            for(int j=0;j<col;j++)
                cout<<a[i][j]<<" ";
            cout<<endl;
        }
    }
};

void main()
{
    int row =2 ,col =3,a[2][MAX]={{1,2,3},{4,5,6}};
    matrix mat1(row,col,a);
    int b[2][MAX]={{4,3,2},{1,2,3}};
    matrix mat2(row,col,b);
    matrix mat3;
    mat3 = mat1 + mat2;
    cout<<"mat3"<<endl;
    mat3.show();
    cout<<"mat1"<<endl;
    mat1.show();
    cout<<"mat4"<<endl;
    matrix mat4;
    mat4 = mat1 - mat2;
    mat4.show();
}