我无法理解这个问题。我有一个函数
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/