我自己制作了一个Matrix课程。但重载+运算符时有一个有趣的问题。
Matrix Matrix::operator+ (Matrix& operand)
{
if(row_size == operand.row_size && col_size == operand.col_size)
{
Matrix temp(row_size, col_size);
for(int i = 0; i < col_size; i ++)
{
for(int j = 0; j < row_size; j ++)
{
temp[i][j] = data_list[i][j] + operand.data_list[i][j];
}
}
return temp;
}
else
throw Error::Matrix_error(0);
}
当我这样做时
matrix + matrix2;
在main函数上,似乎程序处于无限循环中。所以,我只是调试它,发现代码在return temp;
部分停止。
我不知道为什么这个函数不能返回temp
,因为operator +的返回类型是Matrix
。
另外,当我在RELEASE模式(visual studio 2010)中编译时,此代码完全有效。但是,当我在DEBUG模式下编译时,它不起作用。
答案 0 :(得分:0)
问题是我想念创建的复制构造函数。它看起来像是在复制构造函数的无限循环上,但调试器没有捕获它。