【计算机类职业资格】二级C++-103及答案解析.doc

上传人:inwarn120 文档编号:1323955 上传时间:2019-10-17 格式:DOC 页数:17 大小:82.50KB
下载 相关 举报
【计算机类职业资格】二级C++-103及答案解析.doc_第1页
第1页 / 共17页
【计算机类职业资格】二级C++-103及答案解析.doc_第2页
第2页 / 共17页
【计算机类职业资格】二级C++-103及答案解析.doc_第3页
第3页 / 共17页
【计算机类职业资格】二级C++-103及答案解析.doc_第4页
第4页 / 共17页
【计算机类职业资格】二级C++-103及答案解析.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

1、二级 C+-103 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是_。(分数:2.00)A.int operator-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber);2.下列是重载乘法运算符的函数原型声明,其中错误的是_。(分数:2.00)A.MyClass operator*(double,double);B.MyClas

2、s operator*(double,MyClass);C.MyClass operator*(MyClass,double);D.MyClass operator*(MyClass,MyClass);3.已知 Value 是一个类,Value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是_。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v=value,int i);C.Value operator+(Value vint i=0);D.Value operator+(Va

3、lue v=value,int i=0);4.有如下程序: #includeiostream Using namespace std; Class Amount int amount; public; Amount(int n=0):amount(n) Int getAmount()constreturn amount; Amount return ; ; int main() Amount x(3),y(7); x+=y; coutx.getAmount()endl; return 0; 已知程序的运行结果是 10,则下划线处缺失的表达式是_。(分数:2.00)A.*thisB.thisC.

4、 class Pair int m; int n; public: Pair(int i,int j):m(i),n(j) bool operator(Pair P)const; /须在类体外给出定义 ; int main() Pair p1(3,4),p2(4,3),p3(4,5); cout(p1p2)(p2p1)(p2p3)(p3p2); return 0; 运算符函数。perator的功能是比较两个 Pair 对象的大小,当左边对象大时,返回 true,否则返回false。比较规则是首先比较两对象的 m 成员,m 大者为大:当 m 相等时比较 n,n 大者为大。程序输出0101,下列对

5、运算符重载函数的正确定义是_。(分数:2.00)A.bool Pair:operator(Pair p)constif(m!=p.m)return mp.m;return np.n;B.bool Pair:operator(Pair P)if(m!=p.m)return mp.m;return np.n;C.bool Pair:operator(Pair p)constif(mp.m)return true;return np.n;D.bool Pair:operator(Pair P)if(mp.m)return true;return np.n;8.将运算符重载为类成员函数时,其参数表中没

6、有参数,说明该运算符是_。(分数:2.00)A.不合法的运算符B.一元运算符C.无操作数的运算符D.二元运算符9.将前缀运算符“-”重载为非成员函数,下列原型中,能正确用于类中说明的是_。(分数:2.00)A.DecrB.Decr operator-(DecrC.friend DecrD.friend Decr operator-(Decr10.将运算符“+”重载为非成员函数,下列原型声明中,错误的是_。(分数:2.00)A.MycloCk operator+(MyClock,long);B.MycloCk operator+(MyClock,MyClock);C.MycloCk operat

7、or+(long,long);D.MycloCk operator+(long,MyClock);11.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.00)A.赋值运算符只能作为类的成员函数重载B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符12.若在表达式 y/x 中,“/“是作为成员函数重载的运算符,则该表达式还可以表示为_。(分数:2.00)A.x.operator/(y)B.operator/(x,y)C.y.operator/(x)D.operator/(y,x)13.

8、有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val; ; 若有对象定义 Type c1;则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3);C.3-c1;D.c1-3;14.若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是_。(分数:2.00)A.Data+(Data);B.Data operator+Data;C.Data+operatorDat

9、a;D.operator+(Data,Data);15.若要对类 BigNumber 中重载的类型转换运算符 long 进行声明,下列选项中正确的是_。(分数:2.00)A.operator long()const;B.operator long(bigNumber);C.long operator long()const;D.long operator long(BigNumber);16.有如下类模板定义: templatetypename T class BigNumber longn ; public: BigNumber(T i):n(i) BigNumber operator+(B

10、igNumber b) return BigNumber(n+b.n); 已知 b1、b2 是 BigNumber 的两个对象,则下列表达式中错误的是_。(分数:2.00)A.b1+b2B.b1+3C.3+b1D.3+317.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.00)A.+B.=C.D.+18.有如下类定义 class MyClass public: _ Private: int data; ; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象 obj,则横线处的声明

11、语句应为_。(分数:2.00)A.friend istreamB.friend istreamC.istreamD.istream19.若为 Fraction 类重载前增 1 运算符+,应在类体中将其声明为_。(分数:2.00)A.FractionB.FractionC.friend FractionD.friend Fraction20.若需要为 XV 类重载乘法运算符,运算结果为 XV 类型,在将其声明为类的成员函数时,下列原型声明正确的是_。(分数:2.00)A.XV operator*(XV,XV);B.XV*(XV);C.operator*(XV);D.XV operator*(XV

12、);21.己知类 MyClock 中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: MyClock c1,c2; / c2=c1+10; 由此可知:为类 MyClock 重载的“+”运算符函数的声明是_。(分数:2.00)A.friend MyClock operator+(MyClock,int);B.friend MyClock operator+(MyClock,MyClock);C.friend MyClock operator+(int,MyClock);D.MyClock operator+(MyClock);22.已知将运算符“+”和“*”作为类 Com

13、plex 的成员函数重载,设 c1 和 c2 是类 Complex 的对象,则表达式 c1+c2*c1 等价于_。(分数:2.00)A.c1.operator*(c2.operator+(c1)B.c1.operator+(c2.operator*(c1)C.c1.operator*(c1.operator+(c2)D.c2.operator+(c1.operator*(c1)23.下列运算符不能重载为友元函数的是_。(分数:2.00)A.= () -B.+ - + -C. = =D.+= -= *= /=24.若要重载+、=、=和运算符,则必须作为类成员重载的运算符是_。(分数:2.00)A

14、和=B.=和C.=和D.=和25.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.00)A.静态函数B.友元函数C.成员函数D.构造函数26.下列关于模板的叙述中,错误的是_。(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用和括起来的部分是模板的形参表C.类模板不能有数据成员D.在一定条件下函数模板的实参可以省略27.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.

15、5);C.func(3,5.5);D.funcint(3,5.5);28.有如下函数模板: templatetypename T,typename U T cast(U u)return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是_。(分数:2.00)A.cast(i);B.cast(i);C.castchar*,int(i);D.castdouble,int(i);29.关于在调用模板函数时模板实参的使用,下列表述正确的是_。(分数:2.00)A.对于虚拟类型参数所对应的模板实参,如果能从模板函数的实参中获得相

16、同的信息,则都可以省略B.对于虚拟类型参数所对应的模板实参,如果它们是参数表中的最后的若干个参数,则都可以省略C.对于虚拟类型参数所对应的模板实参,若能够省略则必须省略D.对于常规参数所对应的模板实参,任何情况下都不能省略30.有如下函数模板: templateclass TT square(T x)return x*x; 其中 T 是_。(分数:2.00)A.函数形参B.函数实参C.模板形参D.模板实参31.下列函数模版中的定义中,合法的是_。(分数:2.00)A.templatetypename TT abs(T x)return x0?-x:x;B.template classTT ab

17、s(T x)return x0?-x:x;C.template Tclass Tabs(T x)return x0?-x:x;D.template T abs(T x)return x0?-x:x;32.C+中的模板包括_。(分数:2.00)A.对象模板和函数模板B.对象模板和类模板C.函数模板和类模板D.变量模板和对象模板33.下列有关模板的叙述中,正确的是_。(分数:2.00)A.函数模板不能含有常规形参B.函数模板的一个实例就是一个函数定义C.类模板的成员函数不能是模板函数D.用类模板定义对象时,绝对不能省略模板实参34.下面是一个模板声明的开始部分: templutetypename

18、Tdouble_ 由此可知_。(分数:2.00)A.这可能是一个函数模板的声明B.这可能是一个类模板的声明C.这既可能是一个函数模板的声明,也可能是一个类模板的声明D.这肯定是一个错误的模板声明35.下列关于模板的叙述中,错误的是_。(分数:2.00)A.调用模版函数时,在一定条件下可以省略模板实参B.可以用 int、double 这样的类型修饰符来声明模版参数C.模板声明中的关键字 class 都可以用关键字 typename 替代D.模板的形参表中可以有多个参数36.下列关于函数模板的描述中,错误的是_。(分数:2.00)A.从模板实参表和从模板函数实参表获得信息矛盾时,以模板实参的信息为

19、准B.对于常规参数所对应的模板实参,任何情况下都不能省略C.虚拟类型参数没有出现在模板函数的形参表中时,不能省略模板实参D.模板参数表不能为空37.下列关于模板形参的描述中,错误的是_。(分数:2.00)A.模板形参表必须在关键字 template 之后B.模板形参表必须用括弧()括起来C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参38.下列关于类模板的描述中,错误的是_。(分数:2.00)A.类模板的成员函数都是模板函数B.可以为类模板参数设置默认值C.类模板描述了一组类D.类模板中只允许有一个类型参数39.下列关于模板的叙述中,正确的是_。(分数:3.00)

20、A.如果一个类中存在纯虚函数,这个类就是类模板B.函数模板不能有形式参数表C.类模板是一种参数化类型的类,是类的生成器D.类模板中不能包含构造函数40.有函数模板声明和一些变量定义如下: templateclass T1,class T2,class T3T1 sum(T2,T3); double d1,d2; 则下列调用中,错误的是_。(分数:3.00)A.sumdouble,double,double(d1,d2);B.sumdouble,double(d1,d2);C.sumdouble(d1,d2);D.sum(d1,d2);41.下列关于函数模板的描述中,正确的是_。(分数:3.00

21、A.函数模板是一个实例函数B.使用函数模板定义的函数没有返回类型C.函数模板的类型参数与函数的参数相同D.通过使用不同的类型参数,可以从函数模板得到不同的实例函数42.有如下函数模板定义: templatetypename T1,Typename T2 T1 Fun(T2 n)return n*5.0; 若要求以 int 型数据 9 作为函数实参调用该模板,并返回一个 double 型数据,则该调用应表示为_。(分数:3.00)A.FUN(9)B.FUN9C.FUNdouble9D.FUN9(double)43.下列关于模板的描述中,错误的是_。(分数:3.00)A.类模板的成员函数都是模板

22、函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键字 typename 声明44.已知主函数中通过如下语句序列实现对函数模板 swap 的调用: int a10,b10; swap(a,b,10); 下列对函数模板 swap 的声明中,会导致上述语句序列发生编译错误的是_。(分数:3.00)A.templatetypename Tvoid swap(Ta,Tb,int size);B.templatetypename Tvoid swap(int size,Ta,Tb);C.templatetypename T1,typename T2void sw

23、ap(T1 a,T2 b,int size;D.templateclass T1,class T2void swap(T1 a,T2 b,int size);45.在定义函数模板或类模板时,开头的保留字是_。(分数:3.00)A.typenameB.templateC.classD.typedef46.若有函数模板 mySwap 和一些变量定义如下:_。 templateclass Tvoid mySwap(T x,T y); double d1,d2;int i1,i2; 下列对 mySwap 的调用中,错误的是(分数:3.00)A.mySwap(i1,i2)B.mySwap(d1,d2)C

24、mySwap(i1,d1)D.mySwapint(i2,d2)二级 C+-103 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:46,分数:100.00)1.下列运算符函数中肯定不属于类 FunNumber 的成员函数的是_。(分数:2.00)A.int operator-(FunNumber);B.FunNumber operator-();C.FunNumber operator-(int);D.int operator-(FunNumber,FunNumber); 解析:解析 此题考查的是运算符“-”的重载。“-”运算符有一元和二元两种,且均可以重载为成员函数

25、和非成员函数。运算符重载为成员函数时,形参个数一般为运算符元数减 l;重载为非成员函数时,形参个数一般和运算符元数相等。所以,“-”运算符重载为成员函数时,参数可以是 0 个或 1 个;而重载为非成员函数时,参数个数可以是 1 个或 2 个。所以 D 选项,肯定是重载为非成员函数。2.下列是重载乘法运算符的函数原型声明,其中错误的是_。(分数:2.00)A.MyClass operator*(double,double); B.MyClass operator*(double,MyClass);C.MyClass operator*(MyClass,double);D.MyClass oper

26、ator*(MyClass,MyClass);解析:解析 此题考查的是运算符重载。本题中,选项 A 重载运算符“*”使用的形参是两个 double,而系统中的“*”运算原本就能计算两个 double,所以这样违反了重载函数的原则,当执行 a*b 这样的表达式时,系统不能识别是否执行运算符重载函数。故答案是 A 选项。3.已知 Value 是一个类,Value 是 Value 的一个对象。下列以非成员函数形式重载的运算符函数原形中,正确的是_。(分数:2.00)A.Value operator+(Value v,int i);B.Value operator+(Value v=value,int

27、 i); C.Value operator+(Value vint i=0);D.Value operator+(Value v=value,int i=0);解析:解析 此题考查的是重载加法运算符“+”。“+”是二元运算符,其第一操作数是对象本身,i为第二操作数,由此可知选项 B 正确。4.有如下程序: #includeiostream Using namespace std; Class Amount int amount; public; Amount(int n=0):amount(n) Int getAmount()constreturn amount; Amount return

28、 ; int main() Amount x(3),y(7); x+=y; coutx.getAmount()endl; return 0; 已知程序的运行结果是 10,则下划线处缺失的表达式是_。(分数:2.00)A.*this B.thisC. class Pair int m; int n; public: Pair(int i,int j):m(i),n(j) bool operator(Pair P)const; /须在类体外给出定义 ; int main() Pair p1(3,4),p2(4,3),p3(4,5); cout(p1p2)(p2p1)(p2p3)(p3p2); r

29、eturn 0; 运算符函数。perator的功能是比较两个 Pair 对象的大小,当左边对象大时,返回 true,否则返回false。比较规则是首先比较两对象的 m 成员,m 大者为大:当 m 相等时比较 n,n 大者为大。程序输出0101,下列对运算符重载函数的正确定义是_。(分数:2.00)A.bool Pair:operator(Pair p)constif(m!=p.m)return mp.m;return np.n; B.bool Pair:operator(Pair P)if(m!=p.m)return mp.m;return np.n;C.bool Pair:operator(

30、Pair p)constif(mp.m)return true;return np.n;D.bool Pair:operator(Pair P)if(mp.m)return true;return np.n;解析:解析 按照比较规则:首先比较两对象的 m 成员,m 大者为大:当 m 相等时比较 n,n 大者为大。这条规则的用 C+写出来就是选项 A。8.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是_。(分数:2.00)A.不合法的运算符B.一元运算符 C.无操作数的运算符D.二元运算符解析:解析 对于一元或二元运算符函数作为成员函数重载时,第一操作数就是对象本身,并不显式地出

31、现在参数表中。即第一操作数仅以 this 指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。9.将前缀运算符“-”重载为非成员函数,下列原型中,能正确用于类中说明的是_。(分数:2.00)A.DecrB.Decr operator-(DecrC.friend Decr D.friend Decr operator-(Decr解析:解析 因为要作为非成员函数重载,所以加 friend,作为前缀操作,其返回的操作结果是对该变量的引用,所以类型为 DeerB.MycloCk operator+(MyClock,MyClock);C.

32、MycloCk operator+(long,long); D.MycloCk operator+(long,MyClock);解析:解析 运算符重载不能有二义性,故选项 C 不能区分运算符的准确含义。11.下列关于赋值运算符“=”重载的叙述中,正确的是_。(分数:2.00)A.赋值运算符只能作为类的成员函数重载 B.默认的赋值运算符实现了“深层复制”功能C.重载的赋值运算符函数有两个本类对象作为形参D.如果已经定义了复制(拷贝)构造函数,就不能重载赋值运算符解析:解析 赋值运算符“=”只能作为成员函数重载。12.若在表达式 y/x 中,“/“是作为成员函数重载的运算符,则该表达式还可以表示为

33、分数:2.00)A.x.operator/(y)B.operator/(x,y)C.y.operator/(x) D.operator/(y,x)解析:解析 运算符函数的函数名是由运算符前加关键字 operator 构成的。所以当“/”作为运算符重载后,其格式为 operator/。所以其作为成员函数调用时的格式为 y.operator/(x)。13.有类定义如下: class Type public: Type(int i=0); Type operator-(int); friend Type operator+(Type,Type); private: int val; ; 若有对

34、象定义 Type c1;则下列语句序列中,错误的是_。(分数:2.00)A.Type(3)+c1;B.c1+Type(3);C.3-c1; D.c1-3;解析:解析 由于在类 Type 中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3 是正确的,而 3-c1 是错误的表达式。14.若要对 Data 类中重载的加法运算符成员函数进行声明,下列选项中正确的是_。(分数:2.00)A.Data+(Data);B.Data operator+Data; C.Data+operatorData;D.operator+(Data,Data);解析:解析 “+”是一个二元运算符,因此作为成员函数

35、重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。运算符函数的函数名是由运算符前加关键字 operator 构成的。15.若要对类 BigNumber 中重载的类型转换运算符 long 进行声明,下列选项中正确的是_。(分数:2.00)A.operator long()const; B.operator long(bigNumber);C.long operator long()const;D.long operator long(BigNumber);解析:解析 在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。16.有如下类模板定义

36、 templatetypename T class BigNumber longn ; public: BigNumber(T i):n(i) BigNumber operator+(BigNumber b) return BigNumber(n+b.n); 已知 b1、b2 是 BigNumber 的两个对象,则下列表达式中错误的是_。(分数:2.00)A.b1+b2B.b1+3C.3+b1 D.3+3解析:解析 C+运算符的重载有两个方式,一种是做为成员函数,另一种是做为友元函数。前种 C+默认省略第一个参数(事实上是对象本身),而后一种是所有的参数都要写全。比如对加法的重载:成员方式为

37、 COperator operator+(COperator ,在调用的过程中我们可以理解为 result=operator+(op);友元方式为 friend COperator operator-(COperator ,在调用的过程中我们可以理解为 result=operator-(op1,op2);。 对于本题来说,整数 3 与 b1 相加时,3 是 int 型,b1 是 BigNumberT型,int 型不能和别的型做运算。17.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.00)A.+B.= C.D.+解析:解析 在 C+中,=

38、)、-以及所有的类型转换运算符只能作为成员函数重载。18.有如下类定义 class MyClass public: _ Private: int data; ; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象 obj,则横线处的声明语句应为_。(分数:2.00)A.friend istream B.friend istreamC.istreamD.istream解析:解析 C+的输入运算符作为非类成员函数重载。在一个类中,可将输入运算符声明为友元函数,在类 MyClass 重载输入运算符的形式如选项 A 所示。19.若为 Fr

39、action 类重载前增 1 运算符+,应在类体中将其声明为_。(分数:2.00)A.Fraction B.FractionC.friend FractionD.friend Fraction解析:解析 在类 Fraction 中重载前增 1 运算符+时,其声明形式为 Fraction 。20.若需要为 XV 类重载乘法运算符,运算结果为 XV 类型,在将其声明为类的成员函数时,下列原型声明正确的是_。(分数:2.00)A.XV operator*(XV,XV);B.XV*(XV);C.operator*(XV);D.XV operator*(XV); 解析:解析 “*”是一个二元运算符,在作

40、为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以 this 指针的形式隐藏在参数表中。21.己知类 MyClock 中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: MyClock c1,c2; / c2=c1+10; 由此可知:为类 MyClock 重载的“+”运算符函数的声明是_。(分数:2.00)A.friend MyClock operator+(MyClock,int); B.friend MyClock operator+(MyClock,MyClock);C.friend MyClock operator+(in

41、t,MyClock);D.MyClock operator+(MyClock);解析:解析 由表达式 c2=c1+10 可知,在对“+”进行重载时,第一操作数是 MyClock 类的对象,而第二操作数是一个整型数据。22.已知将运算符“+”和“*”作为类 Complex 的成员函数重载,设 c1 和 c2 是类 Complex 的对象,则表达式 c1+c2*c1 等价于_。(分数:2.00)A.c1.operator*(c2.operator+(c1)B.c1.operator+(c2.operator*(c1) C.c1.operator*(c1.operator+(c2)D.c2.oper

42、ator+(c1.operator*(c1)解析:解析 表达式 c1+c2*c1 的含义是 c1 加上 c2 与 c1 的积。23.下列运算符不能重载为友元函数的是_。(分数:2.00)A.= () - B.+ - + -C. = =D.+= -= *= /=解析:解析 此题考查的是运算符重载的概念。C+语言规定,=、()、-以及所有的类型转换运算符只能作为成员函数重载,如果要重载为友元函数就必须重载为非成员函数。24.若要重载+、=、=和运算符,则必须作为类成员重载的运算符是_。(分数:2.00)A.+和=B.=和C.=和D.=和 解析:解析 =、()、-以及所有的类型转换运算符只能作为成员

43、函数重载,而且不能是针对枚举类型操作数的重载。25.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.00)A.静态函数B.友元函数C.成员函数 D.构造函数解析:解析 赋值运算符只能作为类的成员函数重载。26.下列关于模板的叙述中,错误的是_。(分数:2.00)A.模板声明中的第一个符号总是关键字 templateB.在模板声明中用和括起来的部分是模板的形参表C.类模板不能有数据成员 D.在一定条件下函数模板的实参可以省略解析:解析 此题考查模板的概念。模板的一般说明形式如下:template 类型形参表函数返回值类型函数名(形参表)函数体,所以选项 A、B 正确。函数模板的实参在一定

44、条件下是可以省略的,所以选项 C错误。27.有如下函数模板定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对 func 的调用中,错误的是_。(分数:2.00)A.func(3,5);B.func(3.0,5.5);C.func(3,5.5); D.funcint(3,5.5);解析:解析 此题考查的是函数模板的使用。引用模板函数和引用一般函数在语法形式上基本相同。需要注意的是说明一个函数模板后,当编译系统发现有一个对应的函数调用时,将根据实参中的类型来确认是否匹配函数模板中的对应形参。本题 C 选项中,编译系统从第一个参数“3”获得

45、信息“int”和从第二个参数获得信息“double”两者矛盾,错误;A、B 选项正确;D 选项中,函数名后的int是模板实参表,编译系统会将 double 型的形参“5.5”自动转化成 int 类型。28.有如下函数模板: templatetypename T,typename U T cast(U u)return u; 其功能是将 U 类型数据转换为 T 类型数据。已知 i 为 int 型变量,下列对模板函数 cast 的调用中正确的是_。(分数:2.00)A.cast(i);B.cast(i);C.castchar*,int(i);D.castdouble,int(i); 解析:解析 此

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

47、解析 此题考查的是模板实参的省略。模板实参在以下集中情况中不能省略:从模板函数实参表获得的信息有矛盾;需要获得特定类型的返回值,而不管参数的类型如何;虚拟类型参数没有出现在模板函数的形参表中;函数模板含有常规形参。30.有如下函数模板: templateclass TT square(T x)return x*x; 其中 T 是_。(分数:2.00)A.函数形参B.函数实参C.模板形参 D.模板实参解析:解析 此题考查的是函数模板。声明一个函数模板的格式是:template模板形参表声明函数声明,函数体其中的模板形参表声明是由一个或多个“模板形参”组成的,每个“模板形参”可具有以下几种形式:typename 参数名:class 参数名;类型修饰参数名。31.下列函数模版中的定义中,合法的是_

展开阅读全文
相关资源
猜你喜欢
  • ASTM R0022 Proposed Methods Prepared by Committee D19 and Published as Information (This is not an ASTM standard available as PDF only)《由委员会D19编制和作为信息发布的提议方法(本文件不是ASTM标准 且仅提供PDF格式).pdf ASTM R0022 Proposed Methods Prepared by Committee D19 and Published as Information (This is not an ASTM standard available as PDF only)《由委员会D19编制和作为信息发布的提议方法(本文件不是ASTM标准 且仅提供PDF格式).pdf
  • ASTM R0023 List of Committee D19 Superseded Standards (This is not an ASTM standard)《D19委员会名单 替代标准(本文件不是ASTM标准)》.pdf ASTM R0023 List of Committee D19 Superseded Standards (This is not an ASTM standard)《D19委员会名单 替代标准(本文件不是ASTM标准)》.pdf
  • ASTM R0028 Manual of Cement Testing ( This is not an ASTM standard available as PDF only)《水泥试验手册(这不是一项ASTM标准 仅提供PDF格式)》.pdf ASTM R0028 Manual of Cement Testing ( This is not an ASTM standard available as PDF only)《水泥试验手册(这不是一项ASTM标准 仅提供PDF格式)》.pdf
  • ASTM R0029 Metric Practice Guide for Cement (This is not an ASTM standard available as PDF only)《水泥用米制规范指南(本文件不是ASTM标准 且仅提供PDF格式)》.pdf ASTM R0029 Metric Practice Guide for Cement (This is not an ASTM standard available as PDF only)《水泥用米制规范指南(本文件不是ASTM标准 且仅提供PDF格式)》.pdf
  • ASTM R0030 Manual of Aggregate and Concrete Testing (This is not an ASTM standard available as PDF only)《集料和混凝土试验手册(这不是一项ASTM标准 仅提供PDF格式)》.pdf ASTM R0030 Manual of Aggregate and Concrete Testing (This is not an ASTM standard available as PDF only)《集料和混凝土试验手册(这不是一项ASTM标准 仅提供PDF格式)》.pdf
  • ASTM R0031 Metric Practice Guide for Concrete and Concrete Aggregates (This is not an ASTM standard available as PDF only)《混凝土和混凝土骨料的米制规范指南(本文件不是ASTM标准)》.pdf ASTM R0031 Metric Practice Guide for Concrete and Concrete Aggregates (This is not an ASTM standard available as PDF only)《混凝土和混凝土骨料的米制规范指南(本文件不是ASTM标准)》.pdf
  • ASTM R0033 ASME B36 10M-2004 Welded and Seamless Wrought Steel Pipe《焊接锻钢管和无缝锻钢管(本文件不是ASTM标准 且仅提供PDF格式)》.pdf ASTM R0033 ASME B36 10M-2004 Welded and Seamless Wrought Steel Pipe《焊接锻钢管和无缝锻钢管(本文件不是ASTM标准 且仅提供PDF格式)》.pdf
  • ASTM R0036 Stainless Steel Pipe (This is not an ASTM standard available as PDF only)《不锈钢管(本文件不是ASTM标准 且仅提供PDF格式)》.pdf ASTM R0036 Stainless Steel Pipe (This is not an ASTM standard available as PDF only)《不锈钢管(本文件不是ASTM标准 且仅提供PDF格式)》.pdf
  • ASTM R0069 ANSI H35 2-2017 American National Standard Dimensional Tolerances for Aluminum Mill Products (This is not an ASTM standard available as PDF only)《铝矿产品的尺寸规格公差的美国国家标准(米制)(.pdf ASTM R0069 ANSI H35 2-2017 American National Standard Dimensional Tolerances for Aluminum Mill Products (This is not an ASTM standard available as PDF only)《铝矿产品的尺寸规格公差的美国国家标准(米制)(.pdf
  • 相关搜索

    当前位置:首页 > 考试资料 > 职业资格

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