重载operator + for struct而不影响操作数

时间:2017-11-23 12:23:44

标签: c++ operator-overloading

我想在不影响两个操作数的情况下重载struct的plus运算符。

这就是我所做的。

struct Board {   
    int m_len;
    int blk[BLK_MAX][BLK_MAX];
};

Board& operator+(const Board& b1, const Board& b2) {
    Board ret;
    for (int y = 0; y < N; y++) {
        for (int x = 0; x < N; x++) {
            ret.blk[y][x] = b1.blk[y][x] + b2.blk[y][x];
        }
    }
    return ret;
}

它可能工作正常,但是,由于操作员返回局部变量,我感觉不对。我不确定这是否会导致内存损坏。有更好的方法吗?

2 个答案:

答案 0 :(得分:2)

  

有更好的方法吗?

当然有,而且非常简单。添加计算新的值。因此它应该返回(而不是引用):

<ul class="list">
 <li></li>
 <li>
   <ul>
     <li></li>
   </ul>
 </li>
 <li>
   <ul class="innerli">
     <li></li>
   </ul>
 </li>
</ul>

答案 1 :(得分:2)

您不应该通过引用返回本地变量。

你应该替换:

Board& operator+(const Board& b1, const Board& b2)

由:

Board operator+(const Board& b1, const Board& b2)