有趣的C ++运算符重载问题

时间:2011-09-12 15:50:15

标签: c++ overloading operator-keyword

我自己制作了一个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模式下编译时,它不起作用。

1 个答案:

答案 0 :(得分:0)

问题是我想念创建的复制构造函数。它看起来像是在复制构造函数的无限循环上,但调试器没有捕获它。