在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;
}