过载复合"+="操作器作为自由功能

overload compound "+=" opertor as free function

本文关键字:自由 功能 操作器 复合      更新时间:2023-10-16

如何重载 += 对于 std::数组类型,以便我可以执行以下操作

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

如果要重载现有类型的运算符,而不更改该类型,则可以选择非成员重载。

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

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

在线演示