我想在不影响两个操作数的情况下重载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;
}
它可能工作正常,但是,由于操作员返回局部变量,我感觉不对。我不确定这是否会导致内存损坏。有更好的方法吗?
答案 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)