0
matrixType& matrixType::operator+(const matrixType& matrixRight)
{
    matrixType temp;
    if(rowSize == matrixRight.rowSize && columnSize == matrixRight.columnSize)
    {
        temp.setRowsColumns(rowSize, columnSize);
        for (int i=0;i<rowSize;i++)
        {
            for (int j=0;j<columnSize;j++)
            {   
                temp.matrix[i][j] = matrix[i][j] + matrixRight.matrix[i][j];
            }
        }
    }
    else
    {
        cout << "Cannot add matricies that are different sizes." << endl;
    }
    cout << temp;
    return temp;
}


最后的 cout 打印出我所期望的,但是当我将矩阵 a 和矩阵 b 一起添加到我的 main 中时,没有输出我不明白为什么在我返回它之前它会正确,但它没有当它返回时做任何事情。

int main()
{
    matrixType a(2,2);
    matrixType b(2,2);
    matrixType c;
    cout << "fill matrix a:"<< endl;;
    a.fillMatrix();
    cout << "fill matrix b:"<< endl;;
    b.fillMatrix();

    cout << a;
    cout << b;

    cout <<"matrix a + matrix b =" << a+b;

    system("PAUSE");
    return 0;
}

cout a 打印出矩阵 a 正确且与 b 相同,但 a+b 不打印任何内容,尽管在上面的运算符重载中我将其打印出来并且它打印出正确。

4

1 回答 1

2

您正在返回对临时的引用,导致未定义的行为。Anoperator+应该返回一个值:

matrixType operator+(const matrixType& matrixRight);
于 2013-10-22T05:30:28.943 回答