第十章 运算符重载 复习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

运算符重载复习题

1. 重载赋值操作符时,应声明为( )

A. 友元函数

B. 虚函数

C. 成员函数

D. 多态函数

2.关于重载的描述,正确的是( )

A.函数重载只能在成员函数之间进行

B.函数重载只能在全局函数之间进行

C.函数重载可以在基类和派生类之间进行

D.函数重载必须要求同名的函数的形参类型和个数都完全一致,返回值类型无所谓

3.下列运算符中不能重载的是( )。

A.∷(域运算符) B.+ (正) C.++ (自增) D.*(指针)

4. 派生类的对象对它的基类成员中()

A. 公有继承的公有成员是可以访问的

B. 公有继承的私有成员是可以访问的

C. 公有继承的保护成员是可以访问的

D. 私有继承的公有成员是可以访问的

5 不能重载的运算符是()

A. ?:

B. [ ]

C. new

D. &&

6. C++中不能重载的运算符是( )

A. new

B. +=

C. sizeof

D. &&

7.重载函数是( )

A.以函数参数来区分,而不用函数的返回值来区分不同的函数

B.以函数的返回值来区分,而不用函数参数来区分不同的函数

C.参数表完全相同而返回值类型不同的两个或多个同名函数

D.参数表和返回值类型中至少有一个不同的两个或多个同名函数

8.对于运算符重载,说法正确的是( )

A.运算符如果被重载为非成员函数,那么对象就不能利用这个运算符重载函数进行操作

B.运算符重载函数可能既不是成员函数,也不是友元函数

C.用户每定义一个类,系统会自动提供一个赋值运算符重载函数,所以完全不

必考虑重载赋值运算符函数

D.一个类的虚函数不能调用运算符重载函数

9. C++中不能重载的运算符是( )

A. =

B. ()

C. ::

D. delete

10. 不能作为函数重载判断依据的是( )

A. const

B. 返回类型

C. 参数个数

D. 参数类型

11. 为满足运算符“+”的可交换性,必须将其重载为成员函数,重载的函

数名是关键字加上运算符“+”。operator

12. 具有相同函数名但具有不同参数表的函数称为。重载函数

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;

Complex

c1.real+c2.real,c1.imag+c2.imag

15.设有类的定义:

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

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;

相关文档
最新文档