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时没有输出我不明白为什么它会在返回之前就行了但是它没有当它返回时做任何事情。
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打印出矩阵一个正确且相同的b但是a + b不会打印任何东西,尽管在上面的操作符重载中我打印出来并打印出正确的。
答案 0 :(得分:2)
您正在返回对临时的引用,导致未定义的行为。 operator+
应该返回一个值:
matrixType operator+(const matrixType& matrixRight);