写了这么段代码
int operator[] (int n) {
return this->n[n];
}
Num operator+ (Num b) {
Num res("0");
unsigned long long l = max(n.size(), b.n.size());
while (n.size() < l)
n.push_back(0);
while (b.n.size() < l)
b.n.push_back(0);
for (int i = 0; i < l; i++) {
res.n[i] += n[i] + b[i]; //这行
res.n.push_back(res[i] / 10);
res.n[i] %= 10; //还有这行
}
clz(res);
return res;
}
其中加了注释的两行,如写成下面这样就会报错,说必须是可修改的左值:
res.n[i] += n[i] + b[i];
res.n[i] %= 10;
为什么?环境:VS2019