IntMatrix类的.cpp文件中,我编写了以下代码:

IntMatrix& IntMatrix::operator+=(int num) {
    int matrix_size=size();
    for (int i=0;i<matrix_size;i++)
    {
        data[i]+=num;
    }
    return *this;
}

如您所见,两个operator+函数具有完全相同的代码,如何防止这种情况并限制代码重复? (我可以用一个打电话给另一个)

注意:我正在使用C++ 11

最佳答案

是的,您可以按翻转顺序调用operator+:

IntMatrix operator+(int scalar, const IntMatrix &matrix) {
  return matrix + scalar;  // calls operator+(const IntMatrix &matrix, int scalar)
}

另外,对于以operator+作为第一个参数的IntMatrix,您可以按值采用该参数,因为无论如何您都在复制IntMatrix:
IntMatrix operator+(IntMatrix matrix, int scalar) {
    matrix += scalar;
    return matrix;
}

09-28 07:00