我想在不影响两个操作数的情况下重载结构的加号运算符。
这是我所做的。
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;
}
它可能工作正常,但是,我感觉不对,因为操作符返回了一个局部变量。我不确定这是否会导致内存损坏。有一个更好的方法吗?
有一个更好的方法吗?
当然有,而且非常简单。加法计算一个新值。因此它应该返回一个值(而不是引用):
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;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句