当前位置:文档之家› 第十章 运算符重载 复习题

第十章 运算符重载 复习题

运算符重载复习题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,并在类中重载了复数的+、-操作。

请将下列程序补充完整。

Class Complex{public:Complex(double r=0.0,double i=0.O){real=r;imag=i;}Complex operator +(Complex);friend Complex operator -(Complex,Complex);private:double real,imag;};Complex Complex:: operator +(Complex c){return *this;};operator -(Complex c1,Complex c2){return Complex( _);}33.this->real+=c.real,this->imag+=c.imag;Complexc1.real+c2.real,c1.imag+c2.imag15.设有类的定义:class Matrix //定义Matrix 类{public:Matrix(); //默认构造函数friend Matrix operator+(Matrix &,Matrix &); //重载运算符“+”void input(); //输入数据函数void display(); //输出数据函数int mat[2][3]; };实现两个矩阵A和B(均为2行3列)的和。

试写出成员函数Matrix( )实现构造函数初始化0值,友员函数Matrix operator+(Matrix &a,Matrix &b)实现重载运算符+,使之能用于该矩阵相加,如:C=A+B。

Matrix::Matrix() (1分) //定义构造函数{for(int i=0;i<2;i++) (1分)for(int j=0;j<3;j++) (1分)mat[i][j]=0; (1分)}Matrix operator+(Matrix &a,Matrix &b) (1分) //定义重载运算符“+”函数{Matrix c; (1分)for(int i=0;i<2;i++) (1分)for(int j=0;j<3;j++) (1分){c.mat[i][j]=a.mat[i][j]+b.mat[i][j];} (1分)return c; (1分)}16.仔细阅读程序,在题后写出其运行结果。

#include <iostream>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 Complex::operator + (Complex &c2){Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;void Complex::display(){cout<<"("<<real<<","<<imag<<"i)";}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 <iostream>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 Complex::operator + (Complex &c2){Complex c;c.real=real+c2.real;c.imag=imag+c2.imag;return c;}void Complex::display(){cout<<"("<<real<<","<<imag<<"i)";}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.写出下列程序的运行结果。

#include <iostream.h>class Coord{public:Coord(int i=0,int j=0){x=i;y=j;}void Print(){cout<<"x="<<x<<",y=”<<y<<endl;}friend Coord operator++(Coord op);private:int x,int y;};Coord operator ++(Coord op){++op.x; ++op.y;return op;}void main(){Coord obj(2,3); obj.Print();++obj; obj.Print();}运行结果:39. x=2,y=3 (2分)x=2,y=3 (3分)19. 下面程序是一个含有比较运算符和赋值运算符重载的程序,仔细阅读程序并将其补充完整。

#include <iosteam.h>class point{private:float x,y;public:point(float xx=0,float yy=0) { x=xx,y=yy;}point(point&);~point();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+=(point 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())*this20.定义一个复数类Complex,重载运算符“+”,使之能用于复数的加法运算。

相关主题