首页 > 解决方案 > 重载复合“+=”运算符作为自由函数

问题描述

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

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

标签: c++operator-overloading

解决方案


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

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

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

在线演示


推荐阅读