流的思想是按顺序从中读取一些数据,每次都推进其内部指针.通过前进此指针,您可以更改流对象.你不能从const溪流中读取(除非你const播放它们,但这是你不应该做的事情).
编辑:实际上我们不关心隐藏在istream接口后面的实际流对象是否使用了一些"内部指针".确切地说,重要的是流在您读取时会改变其状态,因为下次读取它时会得到不同的结果(您从流中读取下一个内容).如果给你一个const对象,那就意味着你不应该改变它的状态.
此外,有一个原因,你不能只从流中获取数据,而不是改变任何东西.在文件流的情况下,你想要从流中读取的下一件事可能甚至不在内存中,流对象可能必须首先从磁盘读取它,更新其缓冲区等.(编辑:但那不是'改变对象的外部可见状态,所以实际上它不是一个好的参数.阅读mutable关键字以了解更多信息.)