首页 > 全部 > 二级C++ > 国家二级C++机试(运算符重载)模拟试卷6

国家二级C++机试(运算符重载)模拟试卷6

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

国家二级C++机试(运算符重载)模拟试卷6

选择题

1.有如下程序:

#inc1ude<iostream>

Using namespace std;

Class Amount{

int amount;

public;

Amount(int n=0): amount(n){}

Int getAmount()const {retum amount;}

Amount &operator+=(Amount a){

amount+=a.amount;

retum ;

}

};

int main(){

Amount x(3),y(7);

x+=y;

cout<<x.getAmount()<<end1;

retum 0;

}

已知程序的运行结果是10,则下划线处缺失的表达式是( )。(A)

A. *this

B. this

C. &amount

D. amount

解析:此题考查的是“+”运算符重载和this指针。语句amount+=a.amount;实现3和7的求和得到amount=10,要使程序的输出结果为10,又因为函数的返回值类型为Amount&,所以横线处填入*this。

2.如果表达式a>=b中的“>=”是作为非成员函数重载的运算符,则可以等效地表示为( )。(C)

A. a.operator>=(b)

B. b.operatotr>=(a)

C. operator>=(a,b)

D. operator>=(b,a)

解析:运算符函数作为非成员函数时,没有隐含的this指针,因此所有的操作数必须出现在参数表中,对于二元运算符,参数表中有两个参数,分别代表第一操作数和第二操作数,且顺序不能改变。

3.已知表达式++a中的“++”是作为成员函数重载的运算符,则与++a等效的运算符函数调用形式为( )。(C)

A. a.operator++(1)

B. operator++(a)

C. operator++(a,1)

D. a.operator++()

解析:本题主要是对运算符霞载的考查。“++”实现增加1,所以除了a之外的另一个参数默认为1。

4.有如下程序:

#inc1ude<iostream>

using namespace std;

c1ass 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<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);

return 0;

}

运算符函数。perator>的功能是比较两个Pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是( )。

A

解析:按照比较规则:首先比较两对象的m成员,m大者为大:当m相等时比较n,n大者为大。这条规则的用C++写出来就是选项A。

5.将运算符重载为类成员函数时,其参数表中没有参数,说明该运算符是( )。(B)

A. 不合法的运算符

B. —元运算符

C. 无操作数的运算符

D. 二元运算符

解析:对于一元或二元运算符函数作为成员函数重载时,第一操作数就是对象本身,并不显式地出现在参数表中。即第一操作数仅以this指针的形式隐含存在于参数表中。因此,对于一元运算符参数表是空的;对于二元运算符参数表中只有一个参数,它代表第二操作数。

6.将前缀运算符“——”重载为非成员函数,下列原型中,能正确用于类中说明的是( )。(C)

A. Decr& operator——(int);

B. Decr operator——(Decr&, int);

C. friend Decr& operator—— (Decr&);

D. friend Decr operator——(Decr&,int);

解析:因为要作为非成员函数重载,所以加friend,作为前缀操作,其返回的操作结果是对该变量的引用,所以类型为Decr&,操作数出现在参数表中,应声明为引用,即Decr&。

7.将运算符“+\\(C)

A. MycIoCk operator+(MyClock, long);

B. MycIoCk operator+(MyClock, MyClock);

C. Myc1oCk operator+ (long, long);

D. MycIoCk operator+(long, MyClock);

解析:运算符重载不能有二义性,故选项C)不能区分运算符的准确含义。

8.有类定义如下:

c1ass 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. c1+Type(3);

C. 3—c1;

D. c1—3;

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

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

A. Data+(Data);

B. Data operator+{Data};

C. Data+operator{Data};

D. operator+(Data,Data);

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

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

A. operator long()const;

B. operatorlong(bigNumber);

C. lo

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

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

推荐资源

客服

扫码添加客服微信

热线

官方客服

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

电话客服:

客服微信:pujinet

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

公众号

扫码关注微信公众号