1、国家二级 C+机试(运算符重载)模拟试卷 7及答案与解析 一、选择题 1 若在表达式 y x中, “ “是作为成员函数重载的运算符,则该表达式还可以表示为 ( )。 ( A) x operator (y) ( B) operator (x, y) ( C) y operator (x) ( D) operator (y, x) 2 有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type, Type); private: int val; ; 若有对象定义 Type cl;
2、则下列语句序列中,错误的是 ( )。 ( A) Type(3)+cl: ( B) cl+Type(3); ( C) 3-cl; ( D) cl-3; 3 若要对 Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 ( A) Data+(Data); ( B) Data operator+Data; ( C) Data+operatorData; ( D) operator+(Data, Data); 4 若要对类 BigNumber中重载的类型转换运算符 long进行声明,下列选项中正确的是 ( )。 ( A) operator long() const; ( B) op
3、erator long(bigNumber); ( C) long operator long() const; ( D) long operator long(BigNumber); 5 有如下类模板定义: template class BigNumber long n; public: BigNumber(T i): n(i) BigNumber operator+(BigNumber b) return BigNumber(n+b n); 己知 b1、 b2是 BigNumber的两个对象,则下列表达式中错误的是 ( )。 ( A) b1+b2 ( B) b1+3 ( C) 3+b1 (
4、 D) 3+3 6 为类 Matrix重载下列运算符时,只能作为 Matrix类成员函数重载的运算符是( )。 ( A) + ( B) = ( C) ,使得程序中可以 “cinobj; ”形式输入MyClass类的对象 obj,则横线处的声明语句应为 ( )。 ( A) friend istream&operator(istream&is, MyClass&a); ( B) friend istream&operator(istream&is, MyClass a); ( C) istream&operator(istream&is, MyClass&a); ( D) istream&oper
5、ator(istream&is, MyClass a); 8 若为 Fraction类重载前增 1运算符 +,应在类体中将其声明为 ( )。 ( A) Fraction&operator+(); ( B) Fraction&operator+(int); ( C) friend Fraction&operator+(); ( D) friend Fraction&operator+(int); 9 若需要为 XV类重载乘法运算符,运算结果为 XV类型,在将其声明为类的成员函数时,下列原型声明正确的是 ( )。 ( A) XV operator*(XV, XV); ( B) XV*(XV); (
6、 C) operator*(XV); ( D) XV operator*(XV); 10 已知类 MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行 : MyClock c1, c2; c2=c1+10; 由此可知:为类 MyClock重载的 “+”运算符函数的声明是 ( )。 ( A) friend MyClock operator+(MyClock, int); ( B) friend MyClock operator+(MyClock, MyClock); ( C) fiend MyClock operator+(int, MyClock); ( D)
7、 MyClock operator+(MyClock); 11 已知 将运算符 “+”和 “*”作为类 Complex的成员函数重载,设 c1和 c2是类Complex的对象,则表达式 c1+c2*c1等价于 ( )。 ( A) c1 operator*(c2 operator+(c1) ( B) c1 operator+(c2 operator*(c1) ( C) c1 operator*(c1 operator+(c2) ( D) c2 operator+(c1 operator*(c1) 12 下列运算符不能重载为友元函数的是 ( )。 ( A) = () - ( B) + - + -
8、( C) = data;中, cin是 ( )。 ( A) C+的关键字 ( B)类名 ( C)对象名 ( D)函数名 17 如果利用 C+流进行输入输出,下面的叙述中正确的是 ( )。 ( A)只能借助于流对象进行输入输出 ( B)只能进行格式化输入输出 ( C)只能借助于 cin和 cout进行输入输出 ( D)只能使用运算符 和 A表达式可输出字符 A ( B) eof()函数可以检测是否到达文件尾 ( C)对磁盘文件进行流操作时,必须包含头文件 fstream ( D)以 ios base: out模式打开的文件不存在时,将自动建立一个新文件 21 在 C+中, cin是一个 ( )。
9、 ( A)类 ( B)对象 ( C)模板 ( D)函数 22 下列关于 C+预定义流对象的叙述中,正确的是 ( )。 ( A) cin是 C+预定义的标准输入流对象 ( B) cin是 C+预定义的标准输入流类 ( C) cout是 C+预定义的标准输入流对象 ( D) cout是 C+预定义的标准输入流类 23 C+系统预定了 4个用于标准数据流的对象,下列选项中不属于此类对象的是( )。 ( A) cout ( B) cin ( C) cerr ( D) cset 24 要利用 C+流实现输入输出的各种格式控制,必须在程序中包含的头文件是( )。 ( A) fstream ( B) ist
10、reara ( C) ostream ( D) iomaniP 25 在 C+中,打开一个 文件时与该文件建立联系的是 ( )。 ( A)流对象 ( B)模板 ( C)函数 ( D)类 26 下列关于输入输出流的叙述中,正确的是 ( )。 ( A)一个文件流可以与一个数据文件相联系 ( B) cin是专门从键盘输入数据的输入流类 ( C)流运算符 using namespace std; int main() cout fill(*); cout width(6); cout fill(#); cout型, int型不能和别的型做运算。 【知识模块】 运算符重载 6 【正确答案】 B 【试题解
11、析】 在 C+中, =、 、 ()、 -以及所有的类型转换运算符只能作为成员函数重载。 【知识模块】 运算符重载 7 【正确答案】 A 【试题解析】 C+的输 入运算符 作为非类成员函数重载。在一个类中,可将输入运算符 声明为友元函数,在类 MyClass重载输入运算符 的形式如选项 A)所示。 【知识模块】 运算符重载 8 【正确答案】 A 【试题解析】 在类 Fraction中重载前增 1运算符 +时,其声明形式为Fraction&operator+();在类 Fraction中重载后增 1运算符 +时,其声明形式为Fraction &operator+(int);。 【知识模块】 运算符
12、重载 9 【正确答案】 D 【试题解析】 “*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以 this指针的形式隐藏在参数表中。 【知识模块】 运算符重载 10 【正确答案】 A 【试题解析】 由表达式 c2=c1+10可知,在对 “+”进行重载时,第一操作数是Myclock类的对象,而第二操作数是一个整型数据。 【知识模块】 运算符重载 11 【正确答案】 B 【试题解析】 表达式 c1+c2*c1的含义是 c1加上 c2与 c1的积。 【知识模块】 运算 符重载 12 【正确答案】 A 【试题解析】 此题考查的是运算符重载
13、的概念。 C+语言规定, =、 、 ()、 -以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。 【知识模块】 运算符重载 13 【正确答案】 D 【试题解析】 =、 、 ()、 -以及所有的类型转换运算符只能作为成员函数重载,而且不能是针对枚举类型操作数的重载。 【知识模块】 运算符重载 14 【正确答案】 C 【试题解析】 赋值运算符只能作为类的成员函数重载 。 【知识模块】 运算符重载 15 【正确答案】 A 【试题解析】 此题考查的是 C+流的概念。从输入流中提取数据称为提取操作,把表达式插入到输出流中的操作称为插入操作,故选项 B错误; cin
14、是一个预定义的输入流对象而不是流类,故选项 c错误;输入输出流中没有 open成员函数,故选项 D错误。 【知识模块】 C+流 16 【正确答案】 C 【试题解析】 此题考查的是预定义流对象。 C+有 4个预定义的流对象: cin一标准输入; cout一标准输出; cerr一标准出错信息输出; clog一带缓冲的标准出错信息输出。 【知识模块】 C+流 17 【正确答案】 A 【试题解析】 此题考查的知识点是 C+流。利用 C+流既可以进行有格式输入输出,也可以进行无格式输入输出,所以选项 B错误: C+的 4个预定义的流对象为: cin一标准输入, cout一标准输出, cerr一标准出错信
15、息输出, clog一带缓冲的标准出错信息输出,选项 C错误; C+流除了可以使用提取 “”插入 “称之为提取运算符,它的功能是从输入流中提取数据赋值给一个变量。 ”。 【知识模块】 C+流 29 【正确答案】 A 【试 题解析】 此题考查的是 I O格式化输出。函数 width(int n)设置输入输出宽度,当实际数据宽度小于制定的宽度时,多余的位置用填充字符填满;当实际数据宽度大于设置的宽度时,仍按实际宽度输出;函数 fill(char c)用来设置填充字符。 【知识模块】 C+流 30 【正确答案】 A 【试题解析】 此题考查的是 C+流的概念和 I O的格式化。 cin是类的对象,亦即输入流对象; ifstream是输入文件流类,不能定义一个输出流对象; C选项中最后输出的是字符串 “PQMN”; D选项中 x中字符串 应该是 “Happy new year”。 【知识模块】 C+流
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1