运算符重载题目

合集下载

运算符重载练习题.

运算符重载练习题.

运算符重载一.单项选择题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++流)模拟试卷1

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

国家二级C++机试(运算符重载、模板和C++流)模拟试卷1(总分:58.00,做题时间:90分钟)一、选择题(总题数:29,分数:58.00)1.运算符重载是对已有的运算符赋予多重含义,因此( )。

(分数:2.00)A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载C++中已经有的运算符,不能定义新运算符√D.C++中已经有的所有运算符都可以重载解析:解析:此题考查的是运算符重载。

运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。

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

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

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

3.通过运算符重载,可以改变运算符原有的( )。

(分数:2.00)A.操作数类型√B.操作数个数C.优先级D.结合性解析:解析:此题考查的是运算符重载。

运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。

故本题选项A正确。

4.下列运算符中,不能被重载的是( )。

(分数:2.00)A.&&B.!=C..√D.++解析:解析:此题考查的是运算符重载。

在C++中,只有.、*、->*、::、?:这五个运算符不能重载。

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

运算符重载自考习题

运算符重载自考习题

2000.1019、重载的运算符仍然保持其原来的优先级、结合性和____________。

25、下面程序希望产生的输出为4+3i,但是运行输出是3+3i,请指出错误并改正#include <iostream.h>class complex {int real; // 实部int imag; // 虚部public:complex(int r=0,int i=0): real(r),imag(i) {}void show() { cout<<real<<"+"<<imag<<"i"<<endl;}complex operator++() { real++; return * this; }};void main() {complex c(2,3);++++c;c.show();}Key:complex &operator++() { real++; return * this; }2001.1029.下面是类fraction(分数)的定义,其中重载的运算符<<以分数形式输出结果,例如将三分之二输出为2/3。

在横线处填上适当字句。

class fraction{int den; //分子int num; //分母friend ostream& operator<<(ostream&,fraction);…};ostream& operator <<(ostream& os,fraction fr){_________;return _________;}29.os<<fr.den<<′/′<<fr.num os2002.106.如果表达式++i*k中的“++”和“*”都是重载的友元运算符,则采用运算符函数调用格式,该表达式还可表示为( )A.operator*(i.operator++(),k)B.operator*(operator++(i),k)C.i.operator++().operator*(k)D.k.operator*(operator++(i))33.写出下面程序的输出结果。

类和对象与运算符重载 - 答案

类和对象与运算符重载 - 答案

选择题1、若有以下说明,在类外使用对象objx成员的正确语句是()。

class X{ int a;void fun1();public:void fun2();};A objx.a=0B objx.fun1();C objx.fun2();D X::fun1();2、若有以下说明,对n的正确访问语句是()。

class Y{ //………;public:static int n;};int Y::n=0;Y objy;A n=1;B Y::n=1;C objy::n=1;D Y->n=1;3、若有以下类Z的说明,函数fstatic的正确定义是()。

class Z{ int a;public:void fstatic(Z &)static;};A void Z::fstatic(Z &objz){objz.a=0;}B void Z::fs tatic(Z &objz){a=objz.a;}C void Z::fstatic(Z &objz){a=0;}D void Z::fstatic(Z &objz){Z::a=0;}4、若有以下类T的说明,函数ffriend的错误定义是()。

class T{ int i;friend void ffriend(T &,int);};A void ffriend(T &objt,int k){objt.i=k;}B void ffriend(T &objt,int k){k=objt.i;}C void T::ffriend(T &objt,int k){K+=objt.i;}D void ffriend(T &objt,int k){objt.i+=k;}5、在类定义的外部,可以被访问的成员有()。

A 所有类成员B 私有或保护类成员C公有的类成员 D 公有或私有的类成员6、关于this指针的说法正确的是()。

国家二级C%2b%2b机试(运算符重载)模拟试卷3.doc

国家二级C%2b%2b机试(运算符重载)模拟试卷3.doc

控制面板试卷遒分:分试题数量:答题120分-钟一剩余时间:调整字号:12 14 16 1820调整背景:国家二级C++机试(运算符重载)模拟试卷3全部题型1.选择题选择题1.运算符重载是对已有的运算符赋予多重含义,因此()。

A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义□ B.可以改变一个己有运算符的优先级和操作数个数C.只能重载C++中已经有的运算符,不能定义新运算符D. C++中己经有的所有运算符都可以重载正确答案:c解析:此题考查的是运算符重载。

运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。

2.通过运算符重载,可以改变运算符原有的()。

A.操作数类型B.操作数个数C.优先级D.结合性正确答案:A解析:此题考查的是运算符重载。

运算符重载具有保持其原有的操作数个数、优先级、语法结构和结合性不变的特性。

故本题选项A正确。

答题卡1A B C D2 A B C D3 A B C D4 A B C D5 A B C D6A B C D7 A B C p8 A B C D9 A B C D WA B C D11 A B CD12A BCD13A BCD14A B C D -----15 A B C D 16A B C D 17A BCD18A B C D 19A BCD20A BCD21A BCD 22 A B C D3.下列关于运算符重载的描述中,正确的是()。

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

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

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

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

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

国家二级C++机试(运算符重载、C++流)模拟试卷1(题后含答案及解析)题型有:1. 选择题选择题1.运算符重载是对已有的运算符赋予多重含义,因此( )。

A.可以对基本类型(如int类型)的数据,重新定义“+”运算符的含义B.可以改变一个已有运算符的优先级和操作数个数C.只能重载C++中已经有的运算符,不能定义新运算符D.C++中已经有的所有运算符都可以重载正确答案:C解析:此题考查的是运算符重载。

运算符重载是针对C++语言原有的运算符进行的,并不能创造新的运算符。

知识模块:运算符重载2.下列运算符中,不能被重载的是( )。

A.&&B.!=C..D.++正确答案:C解析:此题考查的是运算符重载。

在C++中,只有.、.*、->*、::、?:这五个运算符不能重载。

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

A.有的运算符可以作为非成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载正确答案:B解析:“运算符重载”是针对C++中原有运算符进行的,不可能通过重载创造新的运算符。

除了.,.*,->*,::,?:这五个运算符以外,其他运算符都可以重载。

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

A.::运算符不能重载B.类型转换运算符只能作为成员函数重载C.将运算符作为非成员函数重载时必须定义为友元D.重载[]运算符应完成“下标访问”操作正确答案:C解析:C++把重载的运算符视为特殊的函数,称为运算符函数。

“运算符重载”是针对CH中原有运算符进行的,不可能通过重载创造出新的运算符。

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

A.通过运算符重载,可以定义新的运算符B.有的运算符只能作为成员函数重载C.若重载运算符+,则相应的运算符函数名是+D.重载一个二元运算符时,必须声明两个形参正确答案:B解析:此题考查的是运算符重载。

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

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.设有以下类定义,其中说明了“+”运算符重载函数的原型。

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

二、运算符重载(运算符重载的基本概念、运算符重载方法、运算符重载规则、特殊运算符重载和类型转换)
单选题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++编译器解释为()。

A) operator+=(a,operator-(b,c)) B) a.operator+=(b.operator-(c))
C) operator+=(a,b.operator-(c)) D) a.operator+=(operator-(b,c))
10、下列运算符中,必须使用成员函数进行重载的是()。

A) == B) = C) >> D) ++
填空题10道:
1、多数运算符既能作为类的成员函数重载,也能作为类的非成员函数重载,但运算符“[]”只能作为类的函数重载。

2、加法运算符“+”和赋值运算符“=”都重载之后,“+=”也被重载了。

3、单目运算符作为类的成员函数重载时形参。

4、利用成员函数对二元运算符重载时,其右操作数为。

5、重载运算符函数的函数名由关键字引出。

6、运算符的重载归根结底是的重载。

7、后缀自增自减运算符定义时带有一个。

8、双目运算符作为函数重载时需要声明其右操作数,作为重载时需要声明全部操作数。

9、重载的运算符的参数不能全部是。

10、用friend修饰的重载函数可以显式地传递操作数。

这样,重载双目运算符时可使
用参数,重载单目运算符时当然只有参数。

判断题10道:
1、重载的运算符至少有一个参数的类型与自定义的类型有关。

()
2、系统会为用户定义的类自动提供一个默认的赋值运算符,但当类具有指针类型的数据成员时,一般需要重新定义赋值运算符。

()
3、假定要对类AB定义加号操作符重载成员函数,实现两个AB类对象的加法,并返回相
加结果,则该成员函数的声明语句为: AB operator+(AB &,AB &); ()
4、重载插入运算符“<<”必须采用成员重载。

()
5、对二元运算符采用成员函数重载时,只需要一个参数,而且该参数可以是内部类型。

()
6、对一元运算符采用某个类的友元函数重载时需要一个参数,参数为该类的对象,不能是其他类型。

()
7、在一个类中,可以对一个操作符进行多次重载。

()
8、C++中所有的运算符都可以被重载。

()
9、如果在某个类中使用成员函数对运算符重载,其左操作数必须是该类的对象。

()
10、重载赋值运算符“=”时,为了保持原有特性,重载运算符函数中应该使用返回语句“return *this;”。

()。

相关文档
最新文档