C++每日一题2020.5.18(运算符重载)

2. 有两个矩阵a和b,均为2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如c = a + b。

#include<iostream>
#include<iomanip>
using namespace std;

//定义矩阵类
class Matrix
{public:
    
    
    Matrix(double *n){m=n;}
    //输出矩阵
    void display()
    {
        
        for(int i=0;i<6;i+=3)
        {
            cout << "|"<<left << setw(10) << m[i] << "  " ;
            cout << left << setw(10) << *(m+i+1)<< "  " ;
            cout << left  <<  *(m+i+2) << "|" << endl;
            
        }
    }    
    Matrix operator+(Matrix &m2);
    
private:
    double *m;
};

// 运算符重载
Matrix Matrix::operator+(Matrix &m2)
{
    double c[6]={0,0,0,0,0,0};
    Matrix m3(c);
    for(int i=0;i<6;i++)
    {
        m3.m[i]=m[i]+m2.m[i];
    }
    return m3;
}



void test01()
{
    double a[6]={0,1,2,3,4,5},b[6]={1,2,3,4,5,6},c[6]={0,0,0,0,0,0};
    Matrix m1(a),m2(b),m3(c);
    
    m3=m1+m2;
    cout << "----------------" << endl;
    m1.display();
    cout << "+" << endl;
    cout << "----------------" << endl;
    m2.display();
    cout << "=" << endl;
    cout << "----------------" << endl;
    
    m3.display();
    

}
int main()
{
    test01();
    return 0;
}

vscode告诉的问题

运行结果

--------------------

2020.5.19更新

--------------------

// 运算符重载

Matrix  Matrix::operator+(Matrix  &m2)

{

double c[6]={0,0,0,0,0,0};

Matrix m3(c);

for(int i=0;i<6;i++)

{

m3.m[i]=m[i]+m2.m[i];

}

m3.display();

}

原因!!

  • return 不能返回一个数组,只能返回一个字符串或者数字

感谢王峥对我的帮助

posted @ 2020-05-18 20:34  lijiayan&jinze  阅读(228)  评论(0)    收藏  举报