首页 > 全部 > 二级C++ > 国家二级C++机试(运算符重载、模板和C++流)模拟试卷2

国家二级C++机试(运算符重载、模板和C++流)模拟试卷2

本单篇文档共8109字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C++ 章节练习 2274人下载
价格: 1.20 原价:¥9.60
收藏

国家二级C++机试(运算符重载、模板和C++流)模拟试卷2

选择题

1.若在表达式y/x中,’’/’’是作为成员函数重载的运算符,则该表达式还可以表示为( )。(C)

A. x.operator/(y)

B. operator/(x,y)

C. y.operator/(x)

D. operator/(y,x)

解析:运算符函数的函数名是由运算符前加关键字operator构成的。所以当“/”作为运算符重载后,其格式为operator/。所以其作为成员函数调用时的格式为y.operator/(x)。

2.有类定义如下:

class Type{

public:

Type(int i=0);

Type operator-(int);

friend Type operator+(Type,Type);

private:

int val;

};

若有对象定义Type c1;则下列语句序列中,错误的是( )。(C)

A. Type(3)+c1;

B. e1+Type(3);

C. 3-c1:

D. c1-3;

解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。

3.若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。(B)

A. Data+(Data);

B. Data operator+{Data};

C. Data+operator{Data};

D. operator+(Data,Data);

解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。运算符函数的函数名是由运算符前加关键字operator构成的。

4.若要对类BigNumber中重载的类型转换运算符long进行声明,下列选项中正确的是( )。(A)

A. operator long()const;

B. operator long(bigNumber);

C. long operator long()const;

D. long operator long(BjgNumber);

解析:在重载类型转换符时,由于运算符本身已经表示出返回值类型,因此不需要返回值类型的声明。

5.有如下类模板定义:

template<typename T>

class BigNumber{

long n:

public:

BigNumber(T i):n(i){}

BigNumber operator+(BigNumber b){

return BigNtmaber(n+b.n);

}

}

已知b1、b2是,BigNumber的两个对象,则下列表达式中错误的是( )。(C)

A. b1+b2

B. b1+3

C. 3+b1

D. 3+3

解析:C++运算符的重载有两个方式,一种是做为成员函数,另一种是做为友元函数。前种C++默认省略第一个参数(事实上是对象本身),而后一种是所有的参数都要写全。比如对加法的重载:成员方式为COperator operator+(COperator&op);,在调用的过程中我们可以理解为result=operator+(op);友元方式为friend COperator operator.(COperator&op1,COperator&op2);,在调用的过程中我们可以理解为result=operator-(op1,op2);。

对于本题题来说,整数3与b1相加时,3是诚型,b1是BigNumber<T>型,int型不能和别的型做运算。

6.为类Matrix重载下列运算符时,只能作为Matrix类成员函数重载的运算符是( )。(B)

A. +

B. =

C. <<

D. ++

解析:在C++中,=、[]、()、->以及所有的类型转换运算符只能作为成员函数重载。

7.若为Fraction类重载前增1运算符++,应在类体中将其声明为( )。(A)

A. Fraction&operator++();

B. Fraction&operator++(int);

C. friend Fraction&operator++();

D. friend Fraction&operator++(int);

解析:在类Fraction中重载前增1运算符++时,其声明形式为Fraction&operator++();在类Fraction中重载后增1运算符十+时,其声明形式为Fraction&operatorH(int);。

8.若需要为XV类重载乘法运算符,运算结果为XV类型,在将其声明为类的成员函数时,下列原型声明正确的是( )。(D)

A. XV operator*(XV,XV);

B. XV*(XV);

C. operator*(XV);

D. XV operator*(XV);

解析:“*”是一个二元运算符,在作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数就是对象本身,仅以this指针的形式隐藏在参数表中。

9.已知类MyClock中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行:

MyClock c1,c2;

//……

c2=c1+10;

由此可知:为类MyClock重载的“+”运算符函数的声明是( )。(A)

A. friend MyClock operator+(MyClock,int);

B. friend MyClock operator+(MyClock,MyClock);

C. friend MyClock operator+(int,MyClock);

D. MyClock operator+(MyClock);

解析:由表达式c2=c1+10可知,在对“+”进行重载时,第一操作数是MyClock类的对象,而第二操作数是一个整型数据。

10.已知将运算符’’+’’和’’*’’作为类Complex的成员函数重载,设c1和c2是类Complex的对象,则表达式c1+c2*c1等价于( )。(B)

A. c1.operator*(c2.operator+(c1))

B. c1.operator+(c2.operator*(c1))

C. c1.operator*(c1.operator+(c2))

D. c2.operator+(c1.operator*(c1))

解析:表达式c1+c2*c1的含义是c1加上c2与c1的积。

11.下列运算符不能重载为友元函数的是( )。(A)

A. =() [] ->

B. + – ++ —

本文档预览:3600字符,共8109字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C++机试(运算符重载、模板和C++流)模拟试卷2

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号