您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第十章运算符重载复习题
运算符重载复习题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.为满足运算符“+”的可交换性,必须将其重载为成员函数,重载的函数名是关键字加上运算符“+”。operator12.具有相同函数名但具有不同参数表的函数称为。重载函数13.拷贝构造函数是在用一个对象初始化另一个对象时被调用,系统缺省的拷贝构造函数的工作方法是。拷贝数据成员14.下列程序定义了一实部为mal,虚部为imag的复数类complex,并在类中重载了复数的+、-操作。请将下列程序补充完整。ClassComplex{public:Complex(doubler=0.0,doublei=0.O){real=r;imag=i;}Complexoperator+(Complex);friendComplexoperator-(Complex,Complex);private:doublereal,imag;};ComplexComplex::operator+(Complexc){return*this;};operator-(Complexc1,Complexc2){returnComplex(_);}33.this-real+=c.real,this-imag+=c.imag;Complexc1.real+c2.real,c1.imag+c2.imag15.设有类的定义:classMatrix//定义Matrix类{public:Matrix();//默认构造函数friendMatrixoperator+(Matrix&,Matrix&);//重载运算符“+”voidinput();//输入数据函数voiddisplay();//输出数据函数private:intmat[2][3];};实现两个矩阵A和B(均为2行3列)的和。试写出成员函数Matrix()实现构造函数初始化0值,友员函数Matrixoperator+(Matrix&a,Matrix&b)实现重载运算符+,使之能用于该矩阵相加,如:C=A+B。Matrix::Matrix()(1分)//定义构造函数{for(inti=0;i2;i++)(1分)for(intj=0;j3;j++)(1分)mat[i][j]=0;(1分)}Matrixoperator+(Matrix&a,Matrix&b)(1分)//定义重载运算符“+”函数{Matrixc;(1分)for(inti=0;i2;i++)(1分)for(intj=0;j3;j++)(1分){c.mat[i][j]=a.mat[i][j]+b.mat[i][j];}(1分)returnc;(1分)}16.仔细阅读程序,在题后写出其运行结果。#includeiostreamusingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c2);voiddisplay();private:doublereal;doubleimag;};ComplexComplex::operator+(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}voidComplex::display(){cout(real,imagi);}intmain(){Complexc1(3,4),c2(1,-2),c3;c3=c1+c2;c1.display();cout'+';c2.display();cout'=';c3.display();return0;}运行结果:39.(3,4i)+(1,-2i)=(4,2i)17.仔细阅读程序,在题后写出其运行结果。#includeiostreamusingnamespacestd;classComplex{public:Complex(){real=0;imag=0;}Complex(doubler,doublei){real=r;imag=i;}Complexoperator+(Complex&c2);voiddisplay();private:doublereal;doubleimag;};ComplexComplex::operator+(Complex&c2){Complexc;c.real=real+c2.real;c.imag=imag+c2.imag;returnc;}voidComplex::display(){cout(real,imagi);}intmain(){Complexc1(2,3),c2(1,2),c3;c3=c1+c2;c1.display();cout'+';c2.display();cout'=';c3.display();return0;}运行结果:39.(2,3i)+(1,2i)=(4,5i)18.写出下列程序的运行结果。#includeiostream.hclassCoord{public:Coord(inti=0,intj=0){x=i;y=j;}voidPrint(){coutx=x,y=”yendl;}friendCoordoperator++(Coordop);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.下面程序是一个含有比较运算符和赋值运算符重载的程序,仔细阅读程序并将其补充完整。#includeiosteam.hclasspoint{private:floatx,y;public:point(floatxx=0,floatyy=0){x=xx,y=yy;}point(point&);~point();booloperator==(point);booloperator!=(point);point&operator+=(point);floatgetx(){returnx;}floatgety(){returny;}};point::point(point&p){}boolpoint::operator==(pointp){if((x==p.getx())&&(y==p.gety()))Return1;elseReturn0;}boolpoint::operator!=(pointp){if()Return1;elseReturn0;}point&point::operator+=(pointp){this-x+=p.getx();this-y+=p.gety();return}voidmain(){pointp1(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())*this20.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。将运算符函数重载为非成员、非友元的普通函数。编写程序,求出两个复数之和。41.#includeiostreamusingnamespacestd;intmain()(1分){voidconvert(intn);intnumber;(1分)coutinputaninteger:;cinnumber;(1分)coutoutput:endl;(1分)if(number0){cout-;number=-number;(1分)}(1分)convert(number);coutendl;return0;(1分)}voidconvert(intn){inti;charc;if((i=n/10)!=0)(1分)convert(i);c=n%10+'0';(1分)coutc;(1分)}21.仔细阅读程序,在题后写出其运行结果。#includeiostream.h#includestring.hclassString{public:String(){p=NULL;}String(char*str);friendbooloperator(String&string1,String&string2);voiddisplay();private:char*p;};String::String(char*str){p=str;}voidString::display(){coutp;}booloperator(String&string1,String&string2){if(strcmp(string1.p,string2.p)0)returntrue;elsereturnfalse;}voidcompare(String&string1,String&string2){if(operator(string1,string2)==1){string1.display();cout;string2.display();}else{string1.display();cout=;string2.display();}}intmain(){Stringstring1(Aello),string2(Book);compare(string1,string2);return0;}运行结果:39.Aello=Book22.仔细阅读程序,在题后写出其运行结果。#includeiostreamusingnamespacestd;classTime{public:Time(){minute=0;sec=0;}Time(intm,ints):minute(m),sec(s){}Timeoperato
本文标题:第十章运算符重载复习题
链接地址:https://www.777doc.com/doc-2091627 .html