【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc
《【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc(9页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C+机试(运算符重载、模板和 C+流)模拟试卷 2 及答案解析(总分:58.00,做题时间:90 分钟)一、选择题(总题数:29,分数:58.00)1.若在表达式 yx 中,是作为成员函数重载的运算符,则该表达式还可以表示为( )。(分数:2.00)A.xoperator(y)B.operator(x,y)C.yoperator(x)D.operator(y,x)2.有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int
2、val; ; 若有对象定义 Type c1;则下列语句序列中,错误的是( )。(分数:2.00)A.Type(3)+c1;B.e1+Type(3);C.3-c1:D.c1-3;3.若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。(分数:2.00)A.Data+(Data);B.Data operator+Data;C.Data+operatorData;D.operator+(Data,Data);4.若要对类 BigNumber 中重载的类型转换运算符 long 进行声明,下列选项中正确的是( )。(分数:2.00)A.operator long()cons
3、t;B.operator long(bigNumber);C.long operator long()const;D.long operator long(BjgNumber);5.有如下类模板定义: templatetypename T class BigNumber long n: public: BigNumber(T i):n(i) BigNumber operator+(BigNumber b) return BigNtmaber(n+bn); 已知 b1、b2 是,BigNumber 的两个对象,则下列表达式中错误的是( )。(分数:2.00)A.b1+b2B.b1+3C.3+b1
4、D.3+36.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是( )。(分数:2.00)A.+B.=C.D.+7.有如下类定义 class MyClass public: _ Private: int data; ; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象 obj,则横线处的声明语句应为( )。(分数:2.00)A.friend istream。9.若需要为 XV 类重载乘法运算符,运算结果为 XV 类型,在将其声明为类的成员函数时,下列原型声明正确的是( )。(分数:2.00)A.X
5、V operator*(XV,XV);B.XV*(XV);C.operator*(XV);D.XV operator*(XV); 解析:解析:“*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以 this 指针的形式隐藏在参数表中。10.已知类 MyClock 中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: MyClock c1,c2; c2=c1+10; 由此可知:为类 MyClock 重载的“+”运算符函数的声明是( )。(分数:2.00)A.friend MyClock operator+(My
6、Clock,int); B.friend MyClock operator+(MyClock,MyClock);C.friend MyClock operator+(int,MyClock);D.MyClock operator+(MyClock);解析:解析:由表达式 c2=c1+10 可知,在对“+”进行重载时,第一操作数是 MyClock 类的对象,而第二操作数是一个整型数据。11.已知将运算符+和*作为类 Complex 的成员函数重载,设 c1 和 c2 是类 Complex 的对象,则表达式 c1+c2*c1 等价于( )。(分数:2.00)A.c1operator*(c2oper
7、ator+(c1)B.c1operator+(c2operator*(c1) C.c1operator*(c1operator+(c2)D.c2operator+(c1operator*(c1)解析:解析:表达式 c1+c2*c1 的含义是 c1 加上 c2 与 c1 的积。12.下列运算符不能重载为友元函数的是( )。(分数:2.00)A.=() - B.+ - + -C. = =D.+= -= *= =解析:解析:此题考查的是运算符重载的概念。c1+语言规定,=、()、-以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。13.若要重载+、=、=和运算
8、符,则必须作为类成员重载的运算符是( )。(分数:2.00)A.+和=B.=和C.=和D.=和 解析:解析:=、()、-以及所有的类型转换运算符只能作为成员函数重载,而且不能是针对枚举类型操作数的重载。14.在类中重载赋值运算符时,应将其声明为类的( )。(分数:2.00)A.静态函数B.友元函数C.成员函数 D.构造函数解析:解析:赋值运算符只能作为类的成员函数重载。15.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用和括起来的部分是模板的形参表C.类模板不能有数据成员 D.在一定条件下函数模板的实参可以省略解
9、析:解析:此题考查模板的概念。模板的一般说明形式如下:template 类型形参表函数返回值类型函数名(形参表)函数体,所以选项 A、B 正确。函数模板的实参在一定条件下是可以省略的,所以选项 C错误。16.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func的调用中,错误的是( )。(分数:2.00)A.func(3,5);B.func(30,55);C.func(3,55); D.funcint(3,55);解析:解析:此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说
10、明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题 C 选项中,编译系统从第一个参数“3”获得信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B 选项正确:D 选项中,函数名后的int是模板实参表,编译系统会将 double 型的形参“55”自动转化成 int 类型。17.有如下函数模板: templatetypename t,typename U T cast(U u)return u; 其功能是将 U类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是(
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 机试 运算 重载 模板 模拟 试卷 答案 解析 DOC
