提供以下功能:
1)
IntMatrix operator+(const IntMatrix &matrix, int scalar);
2)
IntMatrix operator+(int scalar, const IntMatrix &matrix);
哪个要使用标量并将其添加到Matrix中的每个成员,我应该在类之外(如上面所示)或在类内部声明它们?
在拼贴画中,他们认为如果我们需要它在两个方向上都起作用(对称行为),我们就将其声明出来,但这有点复杂...
答案 0 :(得分:2)
函数1可以作为成员函数编写在类内部,但是函数2必须作为非成员函数编写,因为左侧不是IntMatrix
。
我建议编写一个以operator+=
作为成员函数的int
。然后,您可以轻松地从两个operator+
进行调用,您可以将其写为非成员。
因此,您的operator+
(作为非成员)将如下所示:
IntMatrix operator+(IntMatrix matrix, int scalar) {
return matrix += scalar;
}
IntMatrix operator+(int scalar, IntMatrix matrix) {
return matrix += scalar;
}