用cin去初始化一个类,为什么构造函数的形参和要初始化的属性都要是istream&,为什么要是引用?

#include <iostream>
using namespace std;
template <class T>
class CMyistream_iterator
{

    T v;
    istream &r;
public:
    CMyistream_iterator(istream &rr):r(rr) {
        r >> v;
    }
};
int main()
{
    CMyistream_iterator<int> inputInt(cin);
}

若一个不用引用则有错误信息:
image.png

阅读 2.6k
2 个回答

istream/cons

std::istream 没有拷贝构造函数。所以它不能被拷贝。因而只能传递引用或者指针。

可以理解为 cin cout 分别绑定了 stdin stdout,所以他们是唯一存在的,所以用引用

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