.10,8,10
.10,8,8
.8,8,10
.8,8,8
标准答案:
2.抽象类的作用主要是()。
.直接用作基类
.直接用作指针
.引用的基类型
.包括以上各项
标准答案:
3.将一个函数声明为某类的友元函数后,则在函数中不可以直接访问该类的()。
.公有成员
.私有成员
.保护成员
.都可访问
标准答案:
4.下列对派生类的描述中错误的是()。
.派生类至少有一个基类
.派生类可作为另一个派生类的基类
.派生类除了包含它直接定义的成员外,还包含其基类的成员
.派生类对其继承的基类的成员访问权限保持不变
标准答案:
5.虚函数必须是类的()。
.友元函数
.成员函数
.构造函数
.析构函数
标准答案:
6.“#inlu”是()预处理命令。
.宏定义
.文件包含
.条件编译
.工程配置
标准答案:
7.已知“flot*p;p=nwflot[2];”,若要释放p所指向的堆中的这些字节,下列语句正确的是()。
.ltp;
.ltp[];
.lt[]p;
.ltp[2];
标准答案:
8.下列关于构造函数说法不正确的是()。
.构造函数必须与类同名
.构造函数可以省略不写
.构造函数必须有返回值
.在构造函数中可以对类中的成员进行初始化
标准答案:
9.下列关于拷贝构造函数的描述中,错误的是()。
.一个类可以定义多个拷贝构造函数
.若未定义拷贝构造函数,则系统会提供一个默认拷贝构造函数
.当类中有指针成员变量时,通常要为这个类定义一个拷贝构造函数来实现深拷贝
.拷贝构造函数中的参数按引用方式传递
标准答案:
10.在一个string类对象表示的字符串中插入新字符,应该使用string类的()函数。
.ssign
.insrt
.swp
.fin
标准答案:
11.下列关于构造函数调用顺序的描述中,正确的是()。
.创建派生类对象时,先调用基类的构造函数,后调用派生类的构造函数
.创建基类对象时,先调用基类的构造函数,后调用派生类的构造函数
.创建派生类对象时,先调用派生类的构造函数,后调用基类的构造函数
.创建基类对象时,先调用派生类的构造函数,后调用基类的构造函数
标准答案:
12.假设堆内存分配均成功,则下面程序段完全正确的是()。
.int*p=nwint(3);out<<*p;ltp;
.int*p=nwint[5]={1,2,3,4,5};for(inti=0;i<5;i++)out<
.int*p=nwint[5];for(inti=0;i<5;i++,p++){*p=i;out<<*p;}lt[]p;
.以上程序段均正确
标准答案:
13.任意一个类,析构函数的个数最多是()。
.不限个数
.1
.2
.3
标准答案:
14.将一个string类对象赋予新值,应该使用string类的()函数。
.ssign
.insrt
.swp
.fin
标准答案:
15.下列关于继承的描述中,错误的是()。
.基类中的析构函数不能被派生类继承
.基类中的保护成员在派生类中无法直接访问
.派生类的成员除了包括派生类中自己定义的成员外,还包括它从基类继承的成员
.在公有继承方式下基类中公有成员和保护成员的访问权限到派生类保持不变
标准答案:
16.有如下类声明:
lssSmpl{intx;};则Smpl类成员x是Smpl类的()。
.公有数据成员
.保护数据成员
.私有数据成员
.以上选项都不正确
标准答案:
17.在一个++源文件中使用了in和out,那么在这个源文件中必须包含()文件。
.iostrm
.fstrm
.stio.h
.stli.h
标准答案:
18.在使用类创建对象时,系统会自动调用该对象的()完成对象中数据成员的初始化等操作。
.友元函数
.虚函数
.构造函数
.析构函数
标准答案:
19.已知“int=10,*p;int*&r=p;r=&;*p=20;out<<;”,则输出为()。
.10
.20
.不确定值
.程序有错误
标准答案:
20.关于纯虚函数和抽象类的描述中,错误的是()。
.纯虚函数是一种特殊的虚函数,它没有具体的实现。
.抽象类是指具有纯虚函数的类。
.一个基类中有纯虚函数,该类的派生类一定不再是抽象类。
.抽象类作为基类来使用,其纯虚函数的实现由派生类给出。
标准答案:
21.执行语句“stringstr("");”时,系统会自动调用string类的构造函数()。
.string()
.string(onsthr*s)
.string(onststring&str)
.string(siz_typn,hr)
标准答案:
22.抽象类不能定义对象,但可以声明抽象类的()。
.指针或引用
.函数返回类型
.显式转换
.以上都是
标准答案:
23.程序在调用重载函数时,根据()区分到底要调用哪个函数。
.函数名
.返回值类型
.参数个数和类型
.以上都可以
标准答案:
24.在++中,通过()的机制可以对原有的类进行扩充和完善以适应新的需要。
.继承
.封装
.多态
.重载
标准答案:
25.在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。
下列叙述中正确的是()。
.oprtor+有两个参数,oprtor*有两个参数
.oprtor+有两个参数,oprtor*有一个参数
.oprtor+有一个参数,oprtor*有两个参数
.oprtor+有一个参数,oprtor*有一个参数
标准答案:
26.友元重载运算符oj1>oj2被++编译器解释为()。
.oprtor>(oj1,oj2)
.>(oj1,oj2)
.oj1.oprtor>(oj2)
.oj2.oprtor>(oj1)
标准答案:
27.类的默认的无参构造函数()。
.在任何情况下都存在
.仅当未定义无参构造函数时存在
.仅当未定义有参构造函数时存在
.仅当未定义任何构造函数时存在
标准答案:
28.变量的引用,其含义是指该变量的()。
.值
.类型
.别名
.地址
标准答案:
29.要在类对象上使用运算符,以下不用必须被重载的运算符是()。
.[]
.=
.++
.--
标准答案:
30.派生类中的成员不能访问基类中的()。
.私有成员
.公有成员
.保护成员
.以上都可以
标准答案:
31.使用string类,必须在程序中包含头文件()。
.string.h
.string
.string.h
.string
标准答案:
32.以下为重载函数的一组函数声明的是()。
.voiprint(int);voiprint(oul);
.voifun(int);intfun(int);
.intmx(int,int);intmin(int,int);
.voimm();intmm();
标准答案:
33.下列关于类和对象的叙述中,错误的是()。
.一个类只能有一个对象
.对象是类的具体实例
.类是某一类对象的抽象
.类和对象的关系是一种数据类型与变量的关系
标准答案:
34.对、两个类进行多重继承得到派生类,则创建派生类的对象时,从基类中继承过来的成员变量由()类的构造函数进行初始化。
.
.
.
.都可以
标准答案:
35.下列虚基类的声明中,正确的是()。
.lssvirtul:
puli
.virtullss:
puli
.lss:
pulivirtul
.lss:
virtulpuli
标准答案:
二、判断题(共15道试题,共30分。
)v1.++语言类定义中默认的访问权限是puli。
.错误
.正确
标准答案:
2.在派生类对象销毁时,系统除了会自动调用派生类的析构函数,还会自动调用基类的析构函数。
.错误
.正确
标准答案:
3.基类类型的指针可以指向其派生类对象。
.错误
.正确
标准答案:
4.假定要对类定义加号操作符重载成员函数,实现两个类对象的加法,并返回相加结果,则该成员函数的声明语句为:
oprtor+(&,&);
.错误
.正确
标准答案:
5.在一个类中声明了某个静态数据成员,并在类外给出其定义和初始化后,若未定义该类的对象,该静态数据成员则不存在。
.错误
.正确
标准答案:
6.在派生类构造函数的成员初始化列表中,可以包含基类构造函数的调用。
.错误
.正确
标准答案:
7.类中所提供的成员函数可以直接访问该类的私有成员。
.错误
.正确
标准答案:
8.为Mylss类对象,“sttivoiStRt(oulr){...}”是Mylss类的静态成员函数,则执行语句“.StRt(0.05);”时,StRt成员函数中的this指针指向对象的地址。
.错误
.正确
标准答案:
9.在++中,允许从一个类派生出任意多个类,但不允许某个类同时从多个类派生。
.错误
.正确
标准答案:
10.对虚函数的调用,系统都是采用动态联编。
.错误
.正确
标准答案:
11.抽象类不能定义对象,但可以声明抽象类的指针或引用。
.错误
.正确
标准答案:
12.一个类的静态数据成员被该类的所有对象共享。
.错误
.正确
标准答案:
13.私有继承中,对于基类中的所有成员,派生类的成员函数都不可直接访问。
.错误
.正确
标准答案:
14.以友元方式重载运算符时,形参列表中至少有一个参数必须是自定义数据类型。
.错误
.正确
标准答案:
15.定义一个虚基类后,则该虚基类后继类层次中的类都需要调用虚基类的构造函数对虚基类中定义的成员变量进行初始化。
.错误
.正确
标准答案:
一、单选题(共35道试题,共70分。
)v1.交换两个string类对象所表示的字符串的内容,应该使用string类的()函数。
.ssign
.insrt
.swp
.fin
标准答案:
2.若类中有指针成员变量,则应编写(),使得在对象销毁时能够自动调用该函数释放指针成员变量所指向的内存空间。
.友元函数
.虚函数
.构造函数
.析构函数
标准答案:
3.要在类对象上使用运算符,以下不用必须被重载的运算符是()。
.[]
.=
.++
.--
标准答案:
4.下面关于类的成员函数描述不正确的是()。
.静态成员函数内可以直接访问类的非静态成员数据
.静态成员函数内可以直接访问类的静态成员数据
.非静态成员函数可以直接访问类的非静态成员数据
.非静态成员函数可以直接访问类的静态成员数据
标准答案:
5.已知“flot*p;p=nwflot[2];”,若分配成功,则指针p在堆中获得的字节数为()。
.2
.4
.8
.不确定
标准答案:
6.程序在调用重载函数时,根据()区分到底要调用哪个函数。
.函数名
.返回值类型
.参数个数和类型
.以上都可以
标准答案:
7.任意一个类,析构函数的个数最多是()。
.不限个数
.1
.2
.3
标准答案:
8.下列关于赋值运算符重载的说法中正确的是()。
.返回值一般是以引用方式返回的对象,而函数体中总是用语句“rturn*this;”返回this指针所指向的对象
.赋值运算符只能以非成员函数的方式重载
.赋值运算符既可以以成员函数的方式重载,又可以以非成员函数的方式重载
.以上均不正确
标准答案:
9.在一个++源文件中使用了in和out,那么在这个源文件中必须包含()文件。
.iostrm
.fstrm
.stio.h
.stli.h
标准答案:
10.类lss的定义如下:
lsslss{puli:
l