第7章-运算符重载-习题_第1页
第7章-运算符重载-习题_第2页
第7章-运算符重载-习题_第3页
第7章-运算符重载-习题_第4页
第7章-运算符重载-习题_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象程序设计习题班级: 学号: 姓名: 名单序号: 成绩: 第7章 运算符重载和多态性一、选择题(共30分,每题1分)1下列运算符中,( )运算符在C+中不能重载。A.?:B.C. newD.+2友元重载运算符obj1obj2被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. 作为

2、成员函数重载的1元运算符 C. 作为友元函数重载的2元运算符 D. 作为成员函数重载的2元运算符5在重载一运算符时,若运算符函数的形参表中没有参数,则不可能的情况是( )。 A. 该运算符是一个单目运算符。 B. 该运算符函数有一个隐含的参数this。 C. 该运算符函数是类的成员函数。 D. 该运算符函数是类的友元函数。6. 关于运输符重载,下列表述中正确的是( )。AC+已有的任何运算符都可以重载B运算符函数的返回类型不能声明为基本数据类型C在类型转换符函数的定义中不需要声明返回类型D可以通过运算符重载来创建C+中原来没有的运算符7. C +流中重载的运算符是一个( )。A. 用于输出操作

3、的非成员函数 B. 用于输出操作的成员函数C. 用于输入操作的非成员函数 D. 用于输入操作的成员函数8. 若要对Data类中重载的加法运算符成员函数进行声明,下列选项中正确的是( )。 A. Data +(Data); B. Data operator+(Data);C. Data +operator(Data); D. operator +(Data, Data);9. 下列运算符中哪些是不能够被重载的( )。 A. .,.*,sizeof,:,?: B. +,-,new,= = C. new,delete,=, D. +,-,=,delete10. 在名为BigNumber类的类体中对运

4、算符函数double进行如下声明:operator double(BigNumbe);函数声明中有一个明显的错误,这个错误就是( )。A参数表中不应该有任何参数B缺少对函数返回类型的说明C参数声明中缺少参数变量D函数声明中缺少函数体11. 下列关于运算符重载的描述中,正确的是( )。A. 运算符重载成为成员函数时,若参数表中无参数,重载是一元运算符B. 一元运算符只能作为成员函数重载C. 二元运算符重载成为非成员函数时,参数表中有一个参数D. C+中可以重载所有的运算符12. 在语句“cout=b,中的“=”是作为非成员函数重载的运算符,则可以等效地表示为( )。 A. a.operator=

5、(b) B. a.operator=(a) C. operator=(a, b) D. a.operator=(b, a)16. 下列有关运算符函数的描述中,错误的是( )。A. 运算符函数的名称总是以operator为前缀的B. 运算符函数的参数可以是对象C. 运算符函数只能定义为类的成员函数D. 在表达式中使用重载的运算符相当于调用运算符重载函数17. 将前缀运算符“-”重载为非成员函数,下列原型中,正确的是( )。A. Decr &operator- - (int); B. Decr operator- - (Decr &, int);C. friend Decr &operator-

6、- (Decr &, int); D. friend Decr &operator- - (Decr &);18下列关于C+预定义流对象的叙述中,正确的是( )。Acin是C+预定义的标准输入流对象Bcin是C+预定义的标准输入流类Ccout是C+预定义的标准输入流对象Dcout是C+预定义的标准输入流类19有如下类定义class MyClass public:_ private: int data;若要为MyClass类重载流输入运算符“”,使得程序中可以用“cinobj;”的形式改变MyClass 类的对象obj中数据成员data的值,则在下划线处的声明语句应为( )。Afriend is

7、tream& operator(istream& is, MyClass &a);Bfriend istream& operator(istream& is, MyClass a);Cistream& operator(istream& is, MyClass &a);Distream& operator(istream& is, MyClass a);20若要在Viz类中将*重载为一元运算符,下列重载函数声明中肯定有错的是( )。AViz operator *();BViz operator *(Viz);Cint operator *(Viz);DViz operator *(Viz, V

8、iz);21已知一运算符函数没有参数,下列关于该运算符函数的表述中错误的是( )。A该运算符函数是成员函数 B该运算符是一元运算符C由于无参数,使用该运算符时不需要操作数D该运算符不是后缀+或后缀-22现需要将Matrix类对象使用的关系运算符“=”重载为成员函数,用于判断两个对象是否相等,以下正确且合理的函数声明是( )。AMatrix& operator=(const Matrix &a);BMatrix operator=(const Matrix &a);Cbool& operator=(const Matrix &a);Dbool operator=(const Matrix &a)

9、;23. 关于赋值运算符=的重载,下列表述中错误的是( )。A=的重载函数必须且只能有一个参数B一个类即使没有重载=,也可以用=为该类的对象赋值C为了实现像“x=y=z;”这样的连续赋值,=的重载函数的返回值必须声明为引用D=可以重载为一个类的友元函数24下列运算符中,可以重载为类的友元函数的运算符是( )。A= B( ) C. D25有如下类的定义:class MyClasspublic:MyClass(double d=0.0):val(d) /类型转换运算符double的定义private: double val;若要使下列语句序列能够正常运行,下划线处的语句应为( )。 MyClass

10、 x(2.1); coutdouble(x);Aoperator double() const return val;Bfriend operator double() const return val;Cdouble operator () const return val;Dfriend double operator () const return val;26若为类MyClass重载运算符“+”,下列声明中,错误的是( )。Afriend MyClass operator+(double, double);Bfriend MyClass operator+(double, MyClas

11、s);Cfriend MyClass operator+(MyClass, double);Dfriend MyClass operator+(MyClass, MyClass);27下列关于运算符重载的叙述中,正确的是( )。A运算符重载的作用是使已有的运算符作用于类的对象B通过运算符重载机制可以为C+语言扩充新的运算符C重载运算符的操作类型可以全部为基本类型DC+中已有的任何运算符都可以重载28. 运算符重载时以下性质一定会保持的是( )。A返回值类型、操作数类型 B操作数类型、优先级C优先级、操作数个数 D返回值类型、结合性29下列关于运算符重载的描述中错误的是( )。A不能通过运算符重

12、载在C+中创建新的运算符B赋值运算符=只能重载为成员函数C运算符函数重载为类的成员函数时,第一操作数是该类对象D重载类型转换运算符时,应声明返回值为void30重载流插入运算符时,下列做法不合理的是( )。A将运算符函数的返回值类型设为ostream &B将运算符函数的第一个参数设为ostream &C为运算符函数设置两个参数D将运算符定义为类的成员函数二、填空题(共28分,每空1分)1利用成员函数对二元运算符重载,其左操作数为,右操作数为 。2对双目运算符而言,成员运算符函数带有 参数,而友元运算符函数带有 参数;对单目运算符而言,成员运算符函数 参数,而友元运算符函数带 参数。3重载运算符

13、的函数不能有 参数,否则就改变了运算符参数的个数。4对于用户自定义的类类型与其他数据类型之间的转换,通常有两种方法:通过 进行类型转换;通过 进行类型转换。 5运算符重载函数一般采用两种形式:一是 ;二是 。6列出5个不能重载的运算符: 、 、 、 和 。7. 下列程序定义了一分子为nume,虚部为deno的分数类Rational,并在类中重载了分数的+、-操作。请将下列程序补充完整。class Rational public:Rational(int x = 0, int y = 1) void Print( ); operator+(Rational a); operator-(Ratio

14、nal a, Rational b ); private: int nume, deno; ; operator+(Rational a) Rational r; r.deno = a.deno*deno; r.nume = a.nume*deno + a.deno*nume; return r; operator-(Rational a, Rational b) Rational r; r.deno = a.deno*b.deno; r.nume = ; return r;三、看程序写结果(共24分,每题4分)1#include #include class Salespublic:void

15、 Init(char n) strcpy(name,n); int & operator(int sub);char* GetName() return name; private:char name25;int divisionTotals5;int& Sales:operator (int sub) /下标运算符重载if(sub4)cerrBad subscript! sub is not allowed.endl;abort();return divisionTotalssub;int main()int totalSales=0,avgSales;Sales company;compa

16、ny.Init(Swiss Cheese); for(int i=0;i5;i+) companyi=i;coutHere are the sales for company.GetName()s divisions:endl;for(int i=0;i5;i+)coutcompanyit;for(i=0;i5;i+)totalSales+=companyi;coutendlThe total sales are totalSalesendl;avgSales=totalSales/5;coutThe average sales are avgSalesendl;return 0;2#incl

17、ude #include class Wordspublic: Words(char *s) str=new charstrlen(s)+1;strcpy(str,s); void Print() coutstr=0) wordn-1=wordn-1-32;n-; word.Print(); 3#include #include class Rectpublic:Rect(int l,int w) length=l; width=w; void Print() coutArea:length*widthPrint();delete p;4#includeclass BB int a,b; pu

18、blic: BB(int i=0,int j=1) a=i; b=j; BB operator +(BB c) BB d; d.a=a + c.a*10; d.b=b+c.b*10; return d; BB operator -(BB c) BB d; d.a=a * c.a; d.b=b*c.b; return d; void show() cout(a,b)endl; ;int main() BB x(2,6) , y(5, 5),z; z=x+y; z.show(); z=x-y; z.show();return 0;5. #includeclass EX int x, y; public: EX(int i=0,int j=1) x=i; y=j; EX operator * (EX z) EX d; d.x=x *z.x; d.y=y*z.y; return d; EX opera

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论