按值传递的 C++ 字符串在这里让我感到困惑。我期待它打印出来aa ab ba bb
但是,它打印aa aab aba abab. 为什么会这样?
std::string s, ab = "ab";
test(s, 0, ab);
void test(std::string s, int i, std::string ab){
if(i == ab.size()){
cout << s << ' ';
return;
}
for(auto c : ab){
s += c;
test(s, i + 1, ab);
}
}
如果我更换
s += c;
test(s, i + 1, ab);
经过
test(s + c, i + 1, ab);
它将按预期工作。