欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc

    • 资源ID:1331970       资源大小:58KB        全文页数:9页
    • 资源格式: DOC        下载积分:5000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要5000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc

    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 的调用中正确的是(

    11、 )。(分数:2.00)A.cast(i);B.cast(i);C.castchar*,int(i);D.castdouble,int(i); 解析:解析:此题考查的是模板函数的调用。本题中 cast()函数的实参 i 只能确定模板参数 U 的类型为int,而不能确定另外一个模板参数 T,故选项 A、B 错误;C+语言不允许隐式地将 int 转化为 char*,故选项 C 错误。18.关于在调用模板函数时模板实参的使用,下列表述正确的是( )。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它

    12、们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略 解析:解析:此题考查的是模板实参的省略。模板实参在以下集中情况中不能省略:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中:函数模板含有常规形参。19.有如下函数模板: templateclass TT square(T x)return x*x; 其中 T 是( )。(分数:2.00)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析:此题考查的是函数模

    13、板。声明一个函数模板的格式是:template模板形参表声明函数声明,函数体其中的模板形参表声明是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename 参数名;class 参数名,类型修饰参数名。20.下列函数模版中的定义中,合法的是( )。(分数:2.00)A.templatetypename T T abs(T x)return x0?-x:x; B.template classTT abs(T x)return x0? -x:x;C.template TclassTabs(T x)return x0? -x:x;D.template T abs(T x)r

    14、eturn x07-x:x;解析:解析:此题考查的是函数模板。声明一个函数模板的格式是:template模板形参表声明函数声明,其中的模板形参表声明是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename 参数名;class 参数名;类型修饰参数名。21.C +中的模板包括( )。(分数:2.00)A.对象模板和函数模板B.对象模板和类模板C.函数模板和类模板 D.变量模板和对象模板解析:解析:此题考查的是模板。在 C+语言中,模板有两类:函数模板和类模板。22.下列有关模板的叙述中,正确的是( )。(分数:2.00)A.函数模板不能含有常规形参B.函数模板的_个

    15、实例就是一个函数定义 C.类模板的成员函数不能是模板函数D.用类模板定义对象时,绝对不能省略模板实参解析:解析:此题考查的是模板的概念。函数模板可以含有常规形参;函数模板的一个实例就是一个函数定义;类模板中的成员函数都是模板函数;在用类模板定义对象时,由于没有像函数实参表这样的额外信息渠道,因此无法按函数模板的方式省略模板形参,但是可以为类模板的参数设置默认值。23.下面是一个模板声明的开始部分: templutetypename T double 由此可知( )。(分数:2.00)A.这可能是一个函数模板的声明 B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板

    16、的声明D.这肯定是一个错误的模板声明解析:解析:此题考查的是函数模板的声明。声明一个函数模板的格式是:template模板形参表声明函数声明;定义类模板的格式是:template类型形参表class类模板名;。24.下列关于模板的叙述中,错误的是( )。(分数:2.00)A.调用模版函数时,在一定条件下可以省略模板实参B.可以用 int、double 这样的类型修饰符来声明模版参数C.模板声明中的关键字 class 都可以用关键字 typename 替代 D.模板的形参表中可以有多个参数解析:解析:在声明模板参数是,关键字 typename 和 class 是可以互换的,两者是等价的。但选项

    17、C 中说的是模版声明,在类模板声明中,替换可能会引起麻烦。25.下列关于函数模板的描述中,错误的是( )。(分数:2.00)A.从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为准B.对于常规参数所对应的模板实参,任何情况下都不能省略C.虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D.模板参数表不能为空 解析:解析:在调用一个模板函数时,如果编译系统能够从模板实参表判断其中或全部虚拟类型参数对应的实际参数,而且它们正好是参数表中最后的若干参数,刚模板实参表中的那几个参数可以省略。26.下列关于模板形参的描述中,错误的是( )。(分数:2.00)A.模板形参表必须在

    18、关键字 template 之后B.模板形参表必须用括弧()括起来 C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参解析:解析:声明一个函数模板的格式是: template模板形参表声明函数声明,其中的模板形参表声明是由一个或多个模板形参组成(如果是多个,需要用逗号隔开)。每个模板形参具有下面的几种形式: typename参数表 class参数名 类型修饰 参数名 由此可知,模板形参表必须用括弧括起来,而不是(),所以选项 B 为正确答案。27.下列关于类模板的描述中,错误的是( )。(分数:2.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C

    19、.类模板描述了一组类D.类模板中只允许有一个类型参数 解析:解析:类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)。一个类模板的格式是:template模板形参表声明类声明,模板形参表声明是由一个或多个模板形参组成。在定义类模板时,可以为模板形参表声明的最后若干个参数设置默认值。28.下列关于模板的叙述中,正确的是( )。(分数:2.00)A.如果一个类中存在纯虚函数,这个类就是类模板B.函数模板不能有形式参数表C.类模板是一种参数化类型的类,是类的生成器 D.类模板中不能包含构造函数解析

    20、:解析:对于函数模板,数据类型本身成了它的参数,是一种参数化类型的函数。对于类模板,数据类型本身成了它的参数,因而是一种参数化类型的类,是类的生成器。29.有函数模板声明和一些变量定义如下: templateclass T1,class T2,class T3T1 sum(T2,T3);double d1,d2; 则下列调用中,错误的是( )。(分数:2.00)A.sumdouble,double,double(d1,d2);B.sumdouble,double(d1,d2);C.sumdouble(d1,d2);D.sum(d1,d2); 解析:解析:虚拟类型参数 T1 没有出现在模板函数的形参表中,因此在调用时不可能从模板函数的实参表中获得相应的信息,因此 T1 无法省略。而在选项 D 中省略了。


    注意事项

    本文(【计算机类职业资格】国家二级C++机试(运算符重载、模板和C++流)模拟试卷2及答案解析.doc)为本站会员(amazingpat195)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开