C++ 'istream::get'和'operator'之间的区别>&燃气轮机;(istream&;,char&;)`

C++ 'istream::get'和'operator'之间的区别>&燃气轮机;(istream&;,char&;)`,c++,data-structures,C++,Data Structures,使用istream::get和操作符>>(istream&,char&)有什么区别: 你能解释一下块1无效而块2有效的可能原因吗 cin.get().get();//Error **block 1** char ch; cin.get(ch).get(ch);//Doesn't gives an error **block 2** 我的猜测是: 块1相当于cin>>而块2cin>>ch>>chistream::get(char c)返回一个istream&,而另一个无参数版本返回int 因此

使用
istream::get
操作符>>(istream&,char&)
有什么区别:

你能解释一下块1无效而块2有效的可能原因吗

cin.get().get();//Error **block 1**
char ch;
cin.get(ch).get(ch);//Doesn't gives an error  **block 2**
我的猜测是:

块1相当于
cin>>而块2
cin>>ch>>ch
istream::get(char c)
返回一个
istream&
,而另一个无参数版本返回int


因此,在第二个版本中,您通过一个完全合法的
istream&
调用
.get(ch)
,在第一种方法中,您尝试调用一个int的get方法,该int是不合法的

>被称为提取运算符,例如,当您希望将输入存储在某个变量中时,可以使用该方法。有关详细信息,请参阅此

当您使用时,这意味着您希望访问类对象的方法


第一个块不正确,beccin.get()返回的int类型没有与之关联的方法get()。其中,作为cin,get(ch)返回类型为istream&

的值。不要猜测,请查找编程入门阅读。我建议Bruce Eckel的“C++思想”。C++类提供了一些不同的输入数据的方式。您可以使用运算符重写运算符>>(std::istream&,T&)或某些静态方法。从某种意义上讲,使用>>运算符更通用,不受某些数据类型的限制。
cin.get().get();//Error **block 1**
char ch;
cin.get(ch).get(ch);//Doesn't gives an error  **block 2**