当前位置:嗨网首页>书籍在线阅读

26-使用哪一个cin.get()

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

5.5.3 使用哪一个cin.get()

在第4章的程序清单4.5中,使用了这样的代码:

char name[ArSize];
...
cout << "Enter your name:\n";
cin.get(name, ArSize).get();

最后一行相当于两个连续的函数调用:

cin.get(name, ArSize);
cin.get();

cin.get()的一个版本接受两个参数:数组名(字符串(char类型)的地址)和ArSize(int类型的整数)。(记住,数组名是其第一个元素的地址,因此字符数组名的类型为char。)接下来,程序使用了不接受任何参数的cin.get()。而最近,我们这样使用过cin.get():

char ch;
cin.get(ch);

这里cin.get接受一个char参数。

看到这里,熟悉C语言的读者将再次感到兴奋或困惑。在C语言中,如果函数接受char指针和int参数,则使用该函数时,不能只传递一个参数(类型不同)。但在C++中,可以这样做,因为该语言支持被称为函数重载的OOP特性。函数重载允许创建多个同名函数,条件是它们的参数列表不同。例如,如果在C++中使用cin.get(name,ArSize),则编译器将找到使用char*和int作为参数的cin.get()版本;如果使用cin.get(ch),则编译器将使用接受一个char参数的版本;如果没有提供参数,则编译器将使用不接受任何参数的cin.get()版本。函数重载允许对多个相关的函数使用相同的名称,这些函数以不同方式或针对不同类型执行相同的基本任务。第8章将讨论该主题。另外,通过使用istream类中的get()示例,读者将逐渐习惯函数重载。为区分不同的函数版本,我们在引用它们时提供参数列表。因此,cin.get()指的是不接受任何参数的版本,而cin.get(char)则指的是接受一个参数的版本。