我是C ++的新手,正在尝试学习关键字“自动”和引用的概念。我在网上看到了这个问题和答案。
以下范围合法吗?如果是这样,c的类型是什么?
const string s = "Keep out!";
for (auto &c : s){ /*... */ }
答案是:
取决于for循环体内的代码。例如:
cout << c; // legal.
c = 'X'; // illegal.
没有提供解释。有人可以解释为什么会这样吗?
因为字符串是常量,所以您不能修改它。基于范围的循环正在使用auto &
将有效变为的类型const char &
。这意味着您要引用实际字符串中的字符,而不是它们的副本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句