第十章 运算符重载 复习题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;