c++矩阵重载不起作用

标签 c++ matrix operator-overloading

无法弄清楚发生了什么。 为什么运算符重载在此代码中不起作用?

class matrix
{
protected:

    int matrix1[5][5],matrix2[5][5],resultmatrix[5][5];
    int m,n,p,q,i,j,k,l;
    public: matrix()
        {
        }
        void getdata();
        //double determinat;
        matrix operator  +(matrix);
        void showmatrix();
};

    void matrix::getdata()
    {
    cout<<"\n"<<"enter no of rows for matrix1 : "<<"\n";
    cin>>m;
    cout<<"\n"<<"enter no of columns for matrix1 : "<<"\n";
    cin>>n;
    cout<<"\n"<<"enter no of rows for matrix2 : "<<"\n";
    cin>>p;
    cout<<"\n"<<"enter no of columns for matrix2 : "<<"\n";
    cin>>q;

    if(m==p&&n==q)
    {
        cout<<"\n"<<"matrixes can be added"<<"\n";
    }
    else
    {
    cout<<"\n"<<"matrixes can not be added"<<"\n";
    exit(0);
    }

    cout<<'\n'<<"please provide for matrix1: "<<"\n";

    for( i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            cin>>matrix1[i][j];
        }
    }

    cout<<'\n'<<"please provide for matrix2: "<<"\n";

    for(int i=0;i<m;i++)
    {
        for(int j=0;j<n;j++)
        {
            cin>>matrix2[i][j];
        }
    }

  }

    matrix matrix::operator+( matrix matrixobj)

{ 矩阵 tempmatrixobj;

for(i=0;i<m;i++)
{
    for(j=0;j<n;j++)
    {
        matrixobj.resultmatrix[i][j]=
       tempmatrixobj.matrix1[i][j]+tempmatrixobj.matrix2[i][j];
    }
}
return matrixobj;
//return tempmatrixobj;

//返回 *this;

    void matrix::showmatrix()
     {
      for(i=0;i<m;i++)
      {
        for(j=0;j<n;j++)
        {
            cout<<resultmatrix[i][j]<<"\t";
        }
        cout<<"\n";
      }

   }

     int main()
     {
       matrix matrixobj1,matrixobj2;
        matrix resultmatrix;

       matrixobj1.getdata();

       matrixobj2.getdata();

    resultmatrix=matrixobj1+matrixobj2;

    resultmatrix.showmatrix();

    return 0;
  }

代码的加法部分根本不起作用,它为每个矩阵取两次值,然后只输出一些内存地址。

输出:

输入矩阵 1 的行数:
3

输入矩阵 1 的列数:
3

输入矩阵 2 的行数:
3

输入矩阵 2 的列数:
3

矩阵可以相加

请提供矩阵1:
1 1 1
1 1 1
1 1 1

请提供矩阵2:
1 1 1
1 1 1
1 1 1

输入矩阵 1 的行数:
2

输入矩阵 1 的列数:
2

输入矩阵 2 的行数:
2

输入矩阵 2 的列数:
2

矩阵可以相加

请提供矩阵1:
1 1
1 1

请提供矩阵2:
1 1
1 1
-1717986920 -1717986920
-1717986920 -1717986920
按任意键继续 。 . .

最佳答案

加法代码

matrixobj.resultmatrix[i][j]=tempmatrixobj.matrix1[i]   [j]+tempmatrixobj.matrix2[i][j];

tempmatrixobj 添加值,而不是从参数添加到 operator+

关于c++矩阵重载不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33980524/

相关文章:

使用自定义函数的 C++ std::sort

c++ - 键盘日志不可用时如何记录击键?

matlab - MATLAB 中的分组组合

c++ - 运算符重载使用operator +作为类模板

C++ POST 表单数据

c++ - NTL 库 GF2X

python - 计算元素仅为相邻整数的矩阵的排列数

c - 打印二维矩阵?

c# - 可重载运算符 == 和 !=

C++ 插入 << 运算符重载