将复合词“ + =”运算符重载为自由函数

时间:2019-03-31 21:50:13

标签: c++ operator-overloading

如何为 std :: array 类型重载 + = ,以便我可以执行以下操作

std::array<int, 3> x = {1,2,3}; 
std::array<int, 3> y = {4,5,6};
x += y;

1 个答案:

答案 0 :(得分:0)

如果您想overload an operator使用现有类型,而无需更改该类型,则可以选择非成员重载。

在这里,您可以尝试使用模板化方法,以便在可以添加元素的情况下覆盖所有可能的数组:

template <class T, size_t n>
std::array<T,n>& operator+= (std::array< T, n>& l, const std::array<T, n> &r) {
    for (size_t i=0; i<n; i++)
        l[i] += r[i];
    return l; 
}

Online demo