运算符重载基础概念练习题

合集下载

c 运算符的重载习题答案

c  运算符的重载习题答案

1.概念填空题1.1运算符重载是对已有的运算符赋予多重含义,使同一个运算符在作用于不同类型对象时导致不同的行为。

运算符重载的实质是函数重载,是类的多态性特征。

1.2可以定义一种特殊的类型转换函数,将类的对象转换成基本数据类型的数据。

但是这种类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。

类类型转换函数既没有参数,也不显式给出返回类型。

类类型函数中必须有return 表达式的语句返回函数值。

一个类可以定义多个类类型转换函数。

1.3运算符重载时其函数名由operator运算符构成。

成员函数重载双目运算符时,左操作数是对象,右操作数是函数参数。

2.简答题2.2简述运算符重载的规则。

2.2简述重载单目运算符++、--,前置和后置时的差别。

2.3 C++中重运算符是否都可以重载?是否都可以重载成类的成员函数?是否都可以重载成类的友元函数?2.4 构造函数作为类型转换函数的条件是什么。

3.选择题3.1在下列运算符中,不能重载的是(B)A.!B. sizeofC. newD. delete3.2 不能用友员函数重载的是(A)。

A.=B.==C.<=D.++3.3下列函数中,不能重载运算符的函数是(B)。

A.成员函数B.构造函数C.普通函数D.友员函数3.4如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为(B)。

A.operator*(i.operator++(),k) B.operator*(operator++(i),k)C.i.operator++().operator*(k) D.k.operator*(operator++(i))3.5已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是(B )。

A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变数据成员的值3.6在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

运算符重载练习题.

运算符重载练习题.

运算符重载一.单项选择题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);};答案:D7. 在第33题中,当执行语句d+=m; 时,C++编译器对语句作如下解释: (34)A. d=operator+=(m);B. m=operator+=(d);C. d.operator+=(m);D. m.operator+=(d);答案:C8. 设有以下类定义,其中说明了“+”运算符重载函数的原型。

运算符重载知识题

运算符重载知识题

.《面向对象程序设计》习题班级:学号:姓名:名单序号:成绩:第7章运算符重载和多态性一、选择题(共30分,每题1分)1.下列运算符中,()运算符在C++中不能重载。

A.?:B.[]C. newD.++2.友元重载运算符obj1>obj2被C++编译器解释为()。

A.operator >(obj1,obj2) B.>(obj1,obj2)C.obj2.operator >(obj1) D.obj1.operator >(obj2)3.重载赋值操作符时,应声明为()函数。

A.友元B.虚C.成员D.多态4.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A. 作为友元函数重载的1元运算符B. 作为成员函数重载的1元运算符C. 作为友元函数重载的2元运算符D. 作为成员函数重载的2元运算符5.在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是()。

A. 该运算符是一个单目运算符。

B. 该运算符函数有一个隐含的参数this。

C. 该运算符函数是类的成员函数。

D. 该运算符函数是类的友元函数。

6. 关于运输符重载,下列表述中正确的是()。

A.C++已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型. C.在类型转换符函数的定义中不需要声明返回类型D.可以通过运算符重载来创建C++中原来没有的运算符7. C ++流中重载的运算符>>是一个()。

A. 用于输出操作的非成员函数B. 用于输出操作的成员函数C. 用于输入操作的非成员函数D. 用于输入操作的成员函数8. 若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是()。

A. Data +(Data);B. Data operator+(Data);C. Data +operator(Data);D. operator +(Data, Data);9. 下列运算符中哪些是不能够被重载的()。

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

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

国家二级C++机试(运算符重载、模板和C++流)模拟试卷6(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.若在表达式y/x中,''/''是作为成员函数重载的运算符,则该表达式还可以表示为( )。

(分数:2.00)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;则下列语句序列中,错误的是( )。

(分数:2.00)A.Type(3)+c1;B.e1+Type(3);C.3-c1:√D.c1-3;解析:解析:由于在类Type中对“-”进行了重载,所以根据“-”重载的形式定义,c1-3是正确的,而3-c1是错误的表达式。

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

(分数:2.00)A.Data+(Data);B.Data operator+{Data};√C.Data+operator{Data};D.operator+(Data,Data);解析:解析:“+”是一个二元运算符,因此作为成员函数重载时参数表中只有一个参数,对应于第二个操作数,而第一个操作数是对象本身。

运算符函数的函数名是由运算符前加关键字operator构成的。

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

运算符重载题目

运算符重载题目

二、运算符重载(运算符重载的基本概念、运算符重载方法、运算符重载规则、特殊运算符重载和类型转换)单选题10道:1、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相加结果,则该成员函数的声明语句为( B )。

A. AB operator+(AB& a,AB& b)B. AB operator+(AB& a)C. operator+(AB a)D. AB &operator+( )2、关于运算符重载,下面的叙述错误的是()。

A.运算符预定义的操作数个数不能改变B.重载不能改变运算符的优先级顺序C.参数的类型没有限制D.尽量使其与原意保持一致3、在一个类中可以对一个操作符进行(D )重载。

A. 1种B. 2种以下C. 3种以下D. 多种4、重载赋值操作符时,应声明为(C )函数。

A. 友元B. 虚C. 成员D. 多态5、要在类对象使用运算符,以下不必被重载的运算符是( A )。

A. []B. =C. ++D. --6、下列运算符中,不能重载的是(C )A.new B.() C.::D.&&7、在表达式x+y*z中,+ 是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

下列叙述中正确的是( A )。

A)operator+有两个参数,operator*有两个参数B)operator+有两个参数,operator*有一个参数C)operator+有一个参数,operator*有两个参数D)operator+有一个参数,operator*有一个参数8、友元运算符obj1>obj2被C++编译器解释为()。

A) operator>(obj1,obj2) B) >(obj1,obj2)C) obj1.operator>(obj2) D) obj2.operator>(obj1)9、已知某个类的友元函数重载了+=和-,a,b,c是该类的对象,则“a+=b-c”被C++编译器解释为()。

国家二级C++机试(运算符重载、C++流)模拟试卷2(题后含答案及解析)

国家二级C++机试(运算符重载、C++流)模拟试卷2(题后含答案及解析)

国家二级C++机试(运算符重载、C++流)模拟试卷2(题后含答案及解析)题型有:1. 选择题选择题1.关于运算符重载,下列表述中正确的是( )。

A.C++已有的任何运算符都可以重载B.运算符函数的返回类型不能声明为基本数据类型C.在类型转换符函数的定义中不需要声明返回类型D.可以通过运算符重载来创建C++中原来没有的运算符正确答案:C解析:此题考查的是运算符重载的概念。

C++语言规定,“.”、“.*”、“->*”、“::”和“?:”这五个运算符不能被重载,故选项A错误:运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定,故选项B说法是错误的;运算符重载是针对原有运算符,并不能通过重载创造出新的运算符,故选项D错误。

知识模块:运算符重载2.下列关于运算符重载的描述中,正确的是( )。

A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C++中可以重载所有的运算符正确答案:A解析:此题考查的是运算符的重载。

运算符重载为成员函数时,形参个数一般为运算符元数减1:重载为非成员函数时,形参个数一般和运算符元数相等。

所以二元运算符重载为非成员函数时,参数表中应有两个参数,C选项错误;运算符重载为成员函数,若参数表中无参数,重载的是一元运算符,选项A正确:一元运算符中,“-”(取负)、“++”、“--”等均可重载为成员函数;C++语言中,“.”、“.*”、“->*”、“::”、“?:”五个运算符不能重载。

知识模块:运算符重载3.运算符重载时不需要保持的性质是( )。

A.操作数个数B.操作数类型C.优先级D.结合性正确答案:B解析:运算符重载应该体现为原有运算符的功能在新的数据类型上的延伸。

重载的运算符保持原有运算符的操作个数、优先级和结合性三个最基本的特征。

知识模块:运算符重载4.下列关于运算符重载的描述中,错误的是( )。

C++运算符重载题库及答案

运算符重载一.单项选择题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<运算符>(<参数,<参数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++解释为:(3)A)c.o p e r a t o r++(m);B)m=o p e r a t o r++(m);C)m.o p e r a t o r++(m);D)o p e r a t o r++(m);class fun{public:....f u n o p e r a t o r+=(f u n);f r i e n d f u n o p e r a t o r++(f u n&,i n t);};答案:D7.在第33题中,当执行语句d+=m;时,C++编译器对语句作如下解释:(34)A.d=operator+=(m);B.m=operator+=(d);C. d.operator+=(m);D.m.operator+=(d);答案:C8.设有以下类定义,其中说明了“+”运算符重载函数的原型。

第11章 运算符重载 习题解答

第11章运算符重载一.单项选择题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. 以下类中分别说明了“+=”和“++”运算符重载函数的原型。

【习题】运算符重载

运算符重载
【实验目的】:
1.掌握运算符重载的用法。

【实验内容】:
1.定义一个Complex类,为其定义构造函数,析构函数,并重载运算符,实现两个
复数的”+”、”-”、”*”运算。

2.设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载
运算符”+”,以实现求两个三角形对象的面积之和。

3.设计一个日期类Date,包括年、月、日等私有数据成员。

要求实现日期的基本运
算,如一日期加上天数、一日期减去天数、两日期相差的天数等。

要求:使用运
算符重载。

“!=”,以实现该类的对象的比较运算。

5.(选做题)编写一个程序实现矩阵的基本运算(加、减、乘法运算)。

【实验体会】:。

4运算符重载复习题1

运算符重载复习题11.概念填空题1.1运算符重载是对已有的运算符赋予含义,使同一个运算符在作用于对象时导致不同的行为。

运算符重载的实质是,是类的特征。

1.2可以定义一种特殊的类型转换函数,将类的对象转换成基本数据类型的数据。

但是这种类型转换函数只能定义为一个类的函数而不能定义为类的友元函数。

类类型转换函数既没有,也不显式给出。

类类型函数中必须有的语句返回函数值。

一个类可以定义类类型转换函数。

1.3运算符重载时其函数名由构成。

成员函数重载双目运算符时,左操作数是,右操作数是。

2.简答题2.2简述运算符重载的规则。

2.2简述重载单目运算符++、--,前置和后置时的差别。

2.3 C++中重运算符是否都可以重载?是否都可以重载成类的成员函数?是否都可以重载成类的友元函数?2.4 构造函数作为类型转换函数的条件是什么。

3.选择题3.1在下列运算符中,不能重载的是( )A.!B. sizeofC. newD. delete3.2 不能用友员函数重载的是( )。

A.=B.==C.<=D.++3.3下列函数中,不能重载运算符的函数是( )。

A.成员函数B.构造函数C.普通函数D.友员函数3.4如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为()。

A.operator*(i.operator++(),k) B.operator*(operator++(i),k)C.i.operator++().operator*(k) D.k.operator*(operator++(i))3.5已知在一个类体中包含如下函数原型:VOLUME operator-(VOLUME)const;下列关于这个函数的叙述中,错误的是()。

A.这是运算符-的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变数据成员的值3.6在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

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

运算符重载基础概念练习题
1、下列运算符中, ()运算符在C++中不能重载。

A =
B ()
C ::
D delete
2、下列运算符中, ()运算符在C++中不能重载。

A ?:
B []
C new
D &&
3、下列关于C++运算符函数的返回类型的描述中,错误的是()。

A 可以是类类型
B 可以是int类型
C 可以是void类型
D 可以是float类型
4、下列运算符不能用友元函数重载的是()。

A +
B =
C *
D <<
5、在重载运算符函数时,下面()运算符必须重载为类成员函数形式。

A +
B -
C ++
D ->
6、下列关于运算符重载的描述中,正确的是()。

A 运算符重载可以改变运算符的操作数的个数
B 运算符重载可以改变优先级
C 运算符重载可以改变结合性
D 运算符重载不可以改变语法结构
7、友元运算符obj>obj2被C++编译器解释为()。

A operator>(obj1,obj2)
B >(obj1,obj2)
C obj2.operator>(obj1)
D obj1.oprator>(obj2)
8、在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。

下列叙述中正确的是()。

A operator+有两个参数,operator*有两个参数
B operator+有两个参数,operator*有一个参数
C operator+有一个参数,operator*有两个参数
D operator+有一个参数,operator*有一个参数
9、重载赋值操作符时,应声明为()函数。

A 友元
B 虚
C 成员
D 多态
10、在一个类中可以对一个操作符进行()重载。

A 1种
B 2种以下
C 3种以下
D 多种
11、在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()。

A. 作为友元函数重载的1元运算符
B. 作为成员函数重载的1元运算符
C. 作为友元函数重载的2元运算符
D. 作为成员函数重载的2元运算符
12、在成员函数中进行双目运算符重载时,其参数表中应带有()个参数。

A. 0
B. 1
C. 2
D. 3
13、双目运算符重载为普通函数时,其参数表中应带有()个参数。

A. 0
B. 1
C. 2
D. 3
14、如果表达式a+b中的"+"是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator+(b)
B. b.operator+(a)
C. operator+(a,b)
D. operator(a+b)
15、如果表达式a==b中的"=="是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator==(b)
B. b.operator==(a)
C. operator==(a,b)
D. operator==(b,a)
16、如果表达式a++中的"++"是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator++()
B. operator++(a)
C. operator++(a,1)
D. operator++(1,a)
17、如果表达式++a中的"++"是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。

A. a.operator++(1)
B. operator++(a)
C. operator++(a,1)
D. a.operator++()
18、关于运算符重载,下列说法正确的是()。

A. 重载时,运算符的优先级可以改变。

B. 重载时,运算符的结合性可以改变。

C. 重载时,运算符的功能可以改变。

D. 重载时,运算符的操作数个数可以改变。

19、关于运算符重载,下列说法正确的是()。

A. 所有的运算符都可以重载。

B. 通过重载,可以使运算符应用于自定义的数据类型。

C. 通过重载,可以创造原来没有的运算符。

D. 通过重载,可以改变运算符的优先级。

20、一个程序中数组a和变量k定义为"int a[5][10],k;",且程序中包含有语句"a(2,5)=++k*3;",则此语句中肯定属于重载操作符的是()。

A. ( )
B. =
C. ++
D. *
21、假定K是一个类名,并有定义"K k; int j;",已知K中重载了操作符( ),且语句"j=k(3);"和"k(5)=99;"都能顺利执行,说明该操作符函数的原形只可能是()。

A. K operator ( ) (int);
B. int operator ( )(int);
C. int & operator ( )(int);
D. K operator( )(int);
22、假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如"m1=m2=m3;"。

重载操作符=的函数原型最好是()。

A. int operaotor=(M);
B. int operator=(M);
C. M operator=(M);
D. M & operator=(M);
23、下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。

A. Value operator+(Value, Value);
B. V alue operator+(Value,int);
C. Value operator+(Value);
D. Value operator+(int , Value);
24、下面是重载双目运算符-的成员函数原形,其中最符合-原来含义的是()。

A. Value Value::operator-(Value);
B. Value V alue::operator-(int);
C. Value V alue::operator-(Value,int);
D. Value Value::operator-(int,Value);
25、在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是()。

A. 该运算符是一个单目运算符。

B. 该运算符函数有一个隐含的参数this。

C. 该运算符函数是类的成员函数。

D. 该运算符函数是类的友元函数。

26、关于插入运算符<<的重载,下列说法不正确的是()。

A. 运算符函数的返回值类型是ostream 。

B. 重载的运算符必须定义为类的成员函数。

C. 运算符函数的第一个参数的类型是ostream 。

D. 运算符函数有两个参数。

相关文档
最新文档