C++ 11的range for里面定义的引用,为什么能被修改?

以下代码节选自 C++ Primer 5th Ed.

string s("Hello World");
for (auto &c: s)
    c = toupper(c);
cout << s << endl;

这里面有一个引用类型的变量c
for循环遍历字符串的过程中,这个引用岂不是指向了不同的位置?
不是说引用的指向不能改变吗?

阅读 5.1k
2 个回答

这里的c是一个变量(迭代器)的别名,你在更改的是c所指向的内容不是引用

你就当每次循环都会新定义一个作用域仅限于一次循环的引用就好了:-)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题