运算符重载练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运算符重载

一.单项选择题

1.下列运算符中,运算符在C++中不能重载。

A .?:B.+C.D.<=

解: C++中不能被重载的运算符有:·,一,::,?:。本题答案为

A。

2.下列运算符中,运算符在C++中不能重载。

A .&& B.[]C.::D.new

c。

解: c++中不能被重载的运算符有:·,· +,::,?:。本题答案为

3.下列关于运算符重载的描述中,是正确的。

A.运算符重载可以改变操作数的个数

B.运算符重载可以改变优先级

C.运算符重载可以改变结合性

D.运算符重载不可以改变语法结构

解:运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算程的语法结构。本题答案为D。

4.友元运算符objl>obj2被C++编译器解释为。

A .operator>(objl,obj2)B.>(obj1,obj2)

C .obj2 . operator:>(obj1)D.objl.operator>(obj2)

解:重载为友元函数的运算符的调用形式如下:

operator<运算符 >(< 参数 1>, <参数 2>)

等价于: <参数 1><运算符 ><参数 2>

本题答案为A。

5.现需要对 list类对象使用的逻辑运算符“ ==”重载,以下函数声明是正确的。

A、 list & list:: operator==(const list &a);

B、 list list:: operator==(const list &a);

C、 bool & list:: operator==(const list &a);

D、 bool list:: operator==(const list &a);

6.以下类中分别说明了“ += ”和“ ++ ”运算符重载函数的原型。如果主函数中有定义:

fun m,c,d;,那么,执行语句c=m++;时,编译器把m++解释为:(33)

A) c.operator++(m);B) m=operator++(m);

C) m.operator++(m);D) operator++(m);

class fun

{ public:

.. .. ..

fun operator +=(fun );

friend fun operator ++(fun &,int);

};

答案: D

7.在第 33 题中,当执行语句 d+=m; 时, C++ 编译器对语句作如下解释:(34)

A. d=operator+=(m);

B. m=operator+=(d);

C. d.operator+=(m);

D. m.operator+=(d);

答案: C

8.设有以下类定义,其中说明了“+”运算符重载函数的原型。这是一个友元函数,当类

外有语句a=b+c;访问这个友元函数时,C++ 编译器把对语句a=b+c;解释为:

operator +(b,c)

其中:(35)

A. a,b,c C. a,c

都必须是Com 的对象

都必须是Com 的对象

B. a,b

D. b,c

都必须是

都必须是

Com 的对象

Com 的对象

class Com

{ ... ...

friend Com operator +(... ...); };

答案: B

二.填空题

1.利用成员函数对双目运算符重载,其左操作数为,右操作数为。

解:将双目运算符重载为类的成员函数时,由于this指针在每次非静态成员函数操作对

象时都作为第一个隐式参数传递给对象,因此它充当了双目运算符的左操作数,而该成员函数的形参则表示双目运算符的右操作数。本题答案为:this指针成员函数参数。

2.运算符重载仍然保持其原来的优先级、和。

解:运算符重载不能改变操作数的个数、运算符的优先级、运算符的结合性和运算符的语法结构。本题答案为:结合性语法结构。

3.为了满足运算符“+”的可交换性,必须将其重载为。

解:以友元函数方式重载运算符可满足运算符“+”的可交换性,因为两个操作数都作为

参数,例如,有以下程序:

#include

class Sample

{

int n;

public:

Sample(){}

Sample(int i){n=i;}

friend Sample operator+(Sample,Sample);

void disp() {cout<<“ n=” <

}

Sample operator+(sample s1,Sample s2)

{

return sample(S1.n+s2.n);

}

void main()

{

Sample S1(2),s2(5),s3;

cout<<” S1:”; S1.disp();

cout<<” s2:”; s2.disp();

s3=S1+S2 ;

cout<<” s3:”; s3 .disp();

S3=S2+S1;

cout<< ” s3:”; s3.disp();

}

程序执行结果如下:

从中看到,执行 sl+s2 和 s2+sl 的结果是相同的,从而满足运算符“ +”的交换性。所以本题答案为:友元函数。

4 .在c++中,运算符的重载有两种实现方法,一种是通过成员函数来实现,另一种则通过

(4)来实现。

答案:友元

5. 当用成员函数重载双目运算符时,运算符的左操作数必定是:(5)

答案:对象

相关文档
最新文档