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

下载本文档

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

文档简介

1、运算符重载 复习题1. 重载赋值操作符时,应声明为( ) A. 友元函数 B. 虚函数 C. 成员函数 D. 多态函数2.关于重载的描述,正确的是( )A.函数重载只能在成员函数之间进行B.函数重载只能在全局函数之间进行C.函数重载可以在基类和派生类之间进行D.函数重载必须要求同名的函数的形参类型和个数都完全一致,返回值类型无所谓3下列运算符中不能重载的是 ( )。A (域运算符) B.+ (正) C.+ (自增) D.*(指针)4. 派生类的对象对它的基类成员中( )A. 公有继承的公有成员是可以访问的 B. 公有继承的私有成员是可以访问的C. 公有继承的保护成员是可以访问的 D. 私有继承

2、的公有成员是可以访问的5 不能重载的运算符是( )A. ?: B. C. new D. &6. C+中不能重载的运算符是 ( )A. new B. += C. sizeof D. &7.重载函数是( )A.以函数参数来区分,而不用函数的返回值来区分不同的函数B.以函数的返回值来区分,而不用函数参数来区分不同的函数C.参数表完全相同而返回值类型不同的两个或多个同名函数D.参数表和返回值类型中至少有一个不同的两个或多个同名函数8.对于运算符重载,说法正确的是( ) A.运算符如果被重载为非成员函数,那么对象就不能利用这个运算符重载函数进行操作B.运算符重载函数可能既不是成员函数,也不是友元函数C.

3、用户每定义一个类,系统会自动提供一个赋值运算符重载函数,所以完全不必考虑重载赋值运算符函数D.一个类的虚函数不能调用运算符重载函数9. C+中不能重载的运算符是( )A. = B. () C. : D. delete10. 不能作为函数重载判断依据的是( )A. const B. 返回类型 C. 参数个数 D. 参数类型11. 为满足运算符 “+” 的可交换性, 必须将其重载为成员函数, 重载的函数名是关键字 加上运算符“+”。 operator12. 具有相同函数名但具有不同参数表的函数称为 。重载函数13. 拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方

4、法是 。拷贝数据成员14. 下列程序定义了一实部为mal,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。请将下列程序补充完整。ClassComplexpublic: Complex(doubler=0.0,doublei=0.O)real=r;imag=i;Complex operator+(Complex);friend Complex operator-(Complex,Complex);private:doublereal,imag;Complex Complex: operator+(Complexc) return *this; operator-(Compl

5、exc1,Complexc2) returnComplex( _);33 this-real+=c.real,this-imag+=c.imag; Complex c1.real+c2.real,c1.imag+c2.imag 15设有类的定义:class Matrix /定义Matrix类 public: Matrix(); /默认构造函数 friend Matrix operator+(Matrix &,Matrix &); /重载运算符“+” void input(); /输入数据函数 void display(); /输出数据函数 private: int mat23; ;实现两个矩阵

6、A和B(均为2行3列)的和。试写出成员函数Matrix( )实现构造函数初始化0值,友员函数Matrix operator+(Matrix &a,Matrix &b)实现重载运算符+,使之能用于该矩阵相加,如:C=A+B。Matrix:Matrix() (1分) /定义构造函数for(int i=0;i2;i+) (1分) for(int j=0;j3;j+) (1分) matij=0; (1分)Matrix operator+(Matrix &a,Matrix &b) (1分) /定义重载运算符“+”函数Matrix c; (1分) for(int i=0;i2;i+) (1分) for(i

7、nt j=0;j3;j+) (1分) c.matij=a.matij+b.matij; (1分) return c; (1分) 16仔细阅读程序,在题后写出其运行结果。#include using namespace std;class Complex public: Complex()real=0;imag=0; Complex(double r,double i)real=r;imag=i; Complex operator + (Complex &c2); void display(); private: double real; double imag; ;Complex Comple

8、x:operator + (Complex &c2)Complex c; c.real=real+c2.real; c.imag=imag+c2.imag;return c; void Complex:display()cout(real,imagi);int main()Complex c1(3,4),c2(1,-2),c3; c3=c1+c2; c1.display(); cout+;c2.display(); cout=;c3.display(); return 0;运行结果:39. (3,4i)+(1,-2i)=(4,2i)17仔细阅读程序,在题后写出其运行结果。#include us

9、ing namespace std;class Complex public: Complex()real=0;imag=0; Complex(double r,double i)real=r;imag=i; Complex operator + (Complex &c2); void display(); private: double real; double imag; ;Complex Complex:operator + (Complex &c2)Complex c; c.real=real+c2.real; c.imag=imag+c2.imag;return c;void Com

10、plex:display()cout(real,imagi);int main()Complex c1(2,3),c2(1,2),c3; c3=c1+c2; c1.display(); cout+;c2.display(); cout=;c3.display(); return 0;运行结果:39. (2,3i)+(1, 2i)=(4,5 i)18写出下列程序的运行结果。#includeclassCoordpublic: Coord(inti=0,intj=0)x=i;y=j; voidPrint()coutx=x,y=”yendl; friendCoordoperator+(Coordop)

11、;private:intx,inty;Coordoperator+(Coordop) +op.x; +op.y; returnop;voidmain() Coordobj(2,3); obj.Print(); +obj; obj.Print();运行结果:39. x=2,y=3 (2分)x=2,y=3 (3分)19. 下面程序是一个含有比较运算符和赋值运算符重载的程序,仔细阅读程序并将其补充完整。#include class pointprivate:float x,y;public:point(float xx=0,float yy=0) x=xx,y=yy;point(point&);po

12、int();bool operator=(point);bool operator!=(point);point& operator+=(point);float getx()return x;float gety()return y;point:point(point& p) bool point:operator=(point p)if(x=p.getx()&(y=p.gety() )Return 1;elseReturn 0;bool point:operator!=(point p)if( )Return 1;elseReturn 0;point& point:operator+=(p

13、oint p)this-x+=p.getx();this-y+=p.gety();return void main()point p1(1,2),p2(3,4);p3(5,6);cout”p1=p2? ”(p1=p2)endl;cout”p1!=p2? ”(p1!=p2)endl;p3+=p1;cout”p3+=p1,p3: ”p3.getx()p3.gety()endl; x=p.getx(),y=p.gety() ; (x!=.getx()&(y!=.gety() *this 20定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普

14、通函数。编写程序,求出两个复数之和。41#include using namespace std;int main() (1分)void convert(int n); int number; (1分) coutnumber; (1分) coutoutput:endl; (1分) if (number0) cout-; number=-number; (1分) (1分) convert(number); coutendl; return 0; (1分) void convert(int n) int i; char c; if (i=n/10)!=0) (1分) convert(i); c=n

15、%10+0; (1分) cout c; (1分) 21仔细阅读程序,在题后写出其运行结果。#include #include class String public: String()p=NULL; String(char *str); friend bool operator(String &string1,String &string2); void display(); private: char *p; ; String:String(char *str)p=str;void String:display() cout(String &string1,String &string2)i

16、f(strcmp(string1.p,string2.p)0) return true; else return false;void compare(String &string1,String &string2)if(operator(string1,string2)=1) string1.display();cout;string2.display(); else string1.display();cout=;string2.display();int main()String string1(Aello),string2(Book); compare(string1,string2)

17、; return 0;运行结果:39. Aello=Book22仔细阅读程序,在题后写出其运行结果。#include using namespace std;class Timepublic: Time()minute=0;sec=0; Time(int m,int s):minute(m),sec(s) Time operator+(); void display()coutminute:sec=60) sec-=60; +minute; return *this; int main()Time time1(34,58); for (int i=1;ireal+=c.real,this-im

18、ag+=c.imag; Complex c1.real+c2.real,c1.imag+c2.imag 24仔细阅读程序,在题后写出其运行结果。#include using namespace std;class Timepublic: Time()minute=0;sec=0; Time(int m,int s):minute(m),sec(s) Time operator+(); Time operator+(int); void display()coutminute:sec=60) sec-=60; +minute; return *this;Time Time:operator+(i

19、nt)Time temp(*this); sec+; if(sec=60) sec-=60; +minute; return temp;int main()Time time1(34,59),time2; cout time1 : ; time1.display(); +time1; time2=time1+; cout time2 : ; time2.display(); cout time1 : ; time1.display();return 0;运行结果:38 time1:34:59 (2分)time2:35:0 (2分)time1:35:1 (1分)25编程:定义一个复数类Complex,

温馨提示

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

评论

0/150

提交评论