4运算符重载复习题1

合集下载

运算符重载知识题

运算符重载知识题

.《面向对象程序设计》习题班级:学号:姓名:名单序号:成绩:第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.写出下面程序的输出结果。

4第四章 运算符重载

4第四章 运算符重载
1 2 3
const complex operator - (const complex &c) const; void display(); //输出复数 private: //私有数据成员 1.是为了堵塞a+b=c的漏洞。 double real; //复数实部 2. 3.是为了扩大适应性。 double imag; //复数虚部 };
17
[ ]运算符重载为成员函数
下标运算符[]可以重载: 重载形式为:operator[](int); 当 X x; 隐含调用。 x[y] 可被解释为: 显式调用。 x. operator [ ](y); 只能重载为成员函数,不能使用友元函数。 这个类显然是个‚数组类‛。
18
前置++和后置++重载为成员函数
9
使用
void main(){
complex c1(5,4),c2(2,10),c3; //三个复数类的对象 cout<<"c1="; cout<<"c2="; c1.display(); c2.display();
c3=c1-c2; //使用重载运算符完成复数减法 cout<<"c3=c1-c2="; c3.display(); 程序输出结果为:
这三个运算符是许多 教课书没有提到的。
唯一的一个三目运 算符不能重载。
3
运算符重载的基础
设计运算符重载函数,首先要了解运算符原本的运算语义。重
载函数要忠实遵守该运算符作用于基本数据类型时的语义,
并表现出自身所特有的性质。 例如:+ 、+= 、=、++(前)、++(后) ....

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

C++实验21 运算符重载

C++实验21 运算符重载

实验21 运算符重载一、实验目的和要求1.理解运算符重载的作用。

2.掌握实现运算符重载的方法及几种特殊运算符的重载格式。

3.进一步锻炼针对类的编程能力。

二、实验准备☞知识点1.运算符重载定义的一般格式、基本概念。

2.运算符函数重载的两种形式。

3.通过成员函数实现运算符重载的一般格式。

4.通过友元函数实现运算符重载的一般格式。

5.”++”运算符的重载。

6.”=”赋值运算符的重载。

☞课前练习题1.重载运算”+”,实现a+b运算,则。

A.a必须为对象,b可为整数或实数B.a和b必须为对象C.b必须为对象,a可为整数或实数D.a和b均可为整数或实数2.在C++中,运算符的重载有两种实现方法,一种是通过成员函数来实现,另一种则通过_________来实现。

3.不能重载的5个运算符是:______、______、______、______、_________。

4.重载赋值运算符必须通过________函数实现。

5.用成员函数实现前置”--”运算符重载的一般格式为:_______________________________。

6.用友元函数实现后置”--”运算符重载的一般格式为:_______________________________。

☞分析1.有以下程序:#include<iostream.h>class C{private:double x;public:C( ) { x=0.0; }C(double a) { x=a; }friend C operator--(C t) //行A{t.x--;return t;}void show(){cout<<x<<endl;}};void main(){C c(5.6);(--c).show(); //行Bc.show(); //行C}请回答问题:①从行A 的形式上看,这是利用________函数实现__________运算符的重载。

第十章运算符重载复习题

第十章运算符重载复习题

第十章运算符重载复习题运算符重载复习题1. 重载赋值操作符时,应声明为( )A. 友元函数B. 虚函数C. 成员函数D. 多态函数2.关于重载的描述,正确的是( )A.函数重载只能在成员函数之间进行B.函数重载只能在全局函数之间进行C.函数重载可以在基类和派生类之间进行D.函数重载必须要求同名的函数的形参类型和个数都完全一致,返回值类型无所谓3.下列运算符中不能重载的是( )。

A.∷(域运算符) B.+ (正) C.++ (自增) D.*(指针)4. 派生类的对象对它的基类成员中()A. 公有继承的公有成员是可以访问的B. 公有继承的私有成员是可以访问的C. 公有继承的保护成员是可以访问的D. 私有继承的公有成员是可以访问的5 不能重载的运算符是()A. ?:B. [ ]C. newD. &&6. C++中不能重载的运算符是( )A. newB. +=C. sizeofD. &&7.重载函数是( )A.以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C.参数表完全相同而返回值类型不同的两个或多个同名函数D.参数表和返回值类型中至少有一个不同的两个或多个同名函数8.对于运算符重载,说法正确的是( )A.运算符如果被重载为非成员函数,那么对象就不能利用这个运算符重载函数进行操作B.运算符重载函数可能既不是成员函数,也不是友元函数C.用户每定义一个类,系统会自动提供一个赋值运算符重载函数,所以完全不必考虑重载赋值运算符函数D.一个类的虚函数不能调用运算符重载函数9. C++中不能重载的运算符是( )A. =B. ()C. ::D. delete10. 不能作为函数重载判断依据的是( )A. constB. 返回类型C. 参数个数D. 参数类型11. 为满足运算符“+”的可交换性,必须将其重载为成员函数,重载的函数名是关键字加上运算符“+”。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.编程题 5.1定义一个复数类,将“+”、“-”运算重载为该复数类的成员函 数,实现实部和虚部分别相加减,使得两个操作数都是复数类的对象, 输出相加前后的复数。 5.2定义一个复数类,将“+”、“-”运算重载为该复数类的非成员函 数(友元函数),实现实部和虚部分别相加减,使得两个操作数都是复 数类的对象,输出相加前后的复数。
3.选择题
3.1在下列运算符中,不能重载的是( )
A.! B. sizeof C. new D. delete
3.2 不能用友员函数重载的是(
)。
A.= B.== C.<= D.++
3.3下列函数中,不能重载运算符的函数是( )。
A.成员函数 B.构造函数 C.普通函数 D.友员函数
3.4如果表达式++i*k时中的”++”和”*”都是重载的友元运算符,则
<<”a=”<<a<<’\t’<<“b=”<<b<< '\t'<<”c=”<<c<<’\t’<<endl; (obj2 * obj3 ).get( a, b, c); cout<<“(obj2*obj3):\t”
<<“a=”<<a<<'\t'<<”b=”<<b<<’\t’<<“c=”<<c<<'\t’<<endl; }
operator-
(VOLUME)const;下列关于这个函数的叙述中,错误的是( )。
A.这是运算符-的重载运算符函数
B.这个函数所重载的运算符是一个一元运算符
C.这是一个成员函数
D.这个函数不改变数据成员的值
3.6在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成
员函数重载的运算符。下列叙述中正确的是( )。

A.operator+有两个参数,operator*有两个参数
B.operator+有两个参数,operator*有一个参数
C.operator+有一个参数,operator*有两个参数
D.operator+有一个参数,operator*有一个参数
4.写出下列程序运行结果 4.1#include <iostream>
采用运算符函数调用格式,该表达式还可表示为( )。
A.operator*(i.operator++(),k)
B.operator*
(operator++(i),k)
C.i.operator++().operator*(k)
D.k.operator*
(operator++(i))
3.5已知在一个类体中包含如下函数原型:VOLUME
int a,b,c; }; T T::operator *(T obj) {T tempobj; tempobj.a=a * obj.a; tempobj.b=b * obj.b; tempobj.c=c * obj.c; return tempobj; } int main()
{T obj1( 1,2,3),obj2( 5,5,5),obj3; int a,b,c; obj3=obj1 * obj2; obj3.get( a, b, c); cout<<”(obj1 * obj2):\t”
。类类型函数中必须有 的语句返回函数值。一个类可以定义
类类型转换函数。
1.3运算符重载时其函数名由 构成。成员函数重载双目运算符时,左操
作数是 ,右操作数是 。
2.简答题 2.2简述运算符重载的规则。 2.2简述重载单目运算符++、--,前置和后置时的差别。 2.3 C++中重运算符是否都可以重载?是否都可以重载成类的成员函数? 是否都可以重载成类的友元函数? 2.4 构造函数作为类型转换函数的条件是什么。
运算符重载复习题1
1.概念填空题
1.1运算符重载是对已有的运算符赋予 含义,使同一个运算符在作
用于 对象时导致不同的行为。运算符重载的实质是 ,是类的
特征。
1.2可以定义一种特殊的类型转换函数,将类的对象转换成基本数据类
型的数据。但是这种类型转换函数只能定义为一个类的
函数而不
能定义为类的友元函数。类类型转换函数既没有 ,也不显式给出
#using namesoace std; class T
{public: T( ){a=0; b=0; c=0;} T( int i,int j,int k) {a=i; b =j;c=k;} void get( int &i,int &j,int &k) {i=a; j=b; k=c;}
T operator *(T obj); private:
相关文档
最新文档