c++ - 关于获取 cin 引用的初学者问题

标签 c++

我无法理解这个问题。我有一个函数

void foo(istream& input) {
     input = cin;
}

这失败了(我假设是因为 cin 不应该是“可复制的”。

但是,这有效

void foo(istream& input) {
    istream& baz = cin;
}

我可以在 baz 中获取对 cin 的引用,但无法将其分配给输入,这是否有原因?

谢谢

最佳答案

此语法:

void foo(istream& input) {
     input = cin;
}

不创建引用。它调用 operator= 来复制内容。
然而这个语法:

void foo(istream& input) {
    istream& baz = cin;
}

定义一个新的引用变量。

关键点是,在 C++ 中,一旦声明了引用,就无法更改它。
声明后,引用的行为就好像它是引用自身的对象一样。因此,在其上使用 operator= 会尝试复制到其中。

关于c++ - 关于获取 cin 引用的初学者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944789/

相关文章:

c++ - 找到第 n 个加泰罗尼亚数 mod m 的最快(已知)算法是什么?

c++ - 将主类传递给其他类,以便它们可以访问其功能

c++ - 发生异常时,非 void 函数返回什么,而不使用异常? C++

c++ - C++ 映射表中结构键的比较运算符

c++ - 在函数内释放动态内存

C++链接二叉搜索树(DeleteTree)

c++ - Eigen ,错误地使用了不同类型的逗号初始化程序

c++ - 获取QtDesigner制作的Widget指针

c++ - 从文件设计中加载对象

c++ - 内核态和用户态共享内存。如何共享句柄?