ImageVerifierCode 换一换
格式:DOC , 页数:19 ,大小:70.50KB ,
资源ID:1324009      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1324009.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】二级C++-187及答案解析.doc)为本站会员(eventdump275)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】二级C++-187及答案解析.doc

1、二级 C+-187 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.在待排序的元素序列基本有序的前提下,效率最高的排序方法 0 是_。(分数:2.50)A.冒泡排序B.选择排序C.快速排序D.归并排序2.算法空间复杂度是指_。(分数:2.50)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间3.下列关于队列的叙述中正确的是_。(分数:2.50)A.在队列中只能满插入数据B.在队列中只能删除数据C.队列是先进先出的线性表D.队列是先进后出的线性表4.设树 T 的度为 4,其中度为 1,2

2、,3,4 的结点个数分别为 4,2,1,1。则 T 中的叶子结点数为_。(分数:2.50)A.8B.7C.6D.55.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送_。(分数:2.50)A.调用语句B.命令C.口今D.消息6.下面对对象概念描述错误的是_。(分数:2.50)A.任何对象都必须有继承性B.对象是属性和方法的封装体C.对象间的通信靠消息传递D.操作是对象的动态属性7.下面不属于软件设计原则的是_。(分数:2.50)A.抽象B.模块化C.自底向上D.信息隐蔽8.程序流程图(PFD)中的箭头代表的是_。(分数:2.50)A.数据流B.控制流C.调用关系D.组成关系9.

3、下述关于数据库系统的叙述中正确的是_。(分数:2.50)A.数据库系统减少了数据冗余B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据10.关系表中的每一横行称为一个_。(分数:2.50)A.元组B.字段C.属性D码11.C+语言对 C 语言做了很多改进,最根本的变化是_。(分数:2.50)A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规定函数说明符必须用原型D.引进了类和对象的概念12.以下各选项组中,均是 C+语言关键字的组是_。(分数:2.50)A.public, operator, thisB.short

4、, string, staticC.it, while, =D.private, cout, printf13.下列程序的运行结果为_。 #includeiostream using namespace std; void main() ink a=2; int b=a+1; couta/6endl; (分数:2.50)A.0.66667B.0C.0.7D.0.6666666614.已知有定义: const int D=5; int i=1; double f=0.32; char c=15; 则下列选项错误的是_。(分数:2.50)A.+i;B.D-;C.c+;D.-f;15.下面程序的运行

5、结果为_。 #includeiostream using namespace std; void reverse(int a, int n) int i, t; for(i=0; in/2; i+) t=ai; ai=an-1-i; an-1-i=t; void main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i10; i+)s+=bi; couts; (分数:2.50)A.22B.10C.34D.3016.下面关于 break 语句的描述中,不正确的是_。(分数:2.50)A.

6、break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内17.存在定义 int a10, x, *pa;,若 pa=,下列的哪个选项和其他 3 个选项不是等价的?_。(分数:2.50)A.x=*pa;B.x=*(a+1);C.x=*(pa+1);D.x=a1;18.若已定义: int a=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *P=a, i; 其中 0i9,则对 a 数组元素不正确的引用是_。(分数:2.50)A.ap-aB.*( int c

7、; class A private: int a; static int b; public: A()a=0; c=0; void seta()a+; void setb()b+; void setc()c+; void display()couta“b“c; ; int A:b=0; void main() A a1, a2; a1.seta(); a1.setb(); a1.setc(); a2.seta(); a2.setb(); a2.setc(); a2.display(); (分数:2.50)A.121B.122C.112D.22223.在类的定义中,用于为对象分配内存空间,对类的

8、数据成员进行初始化并执行其他内部管理操作的函数是_。(分数:2.50)A.友元函数B.虚函数C.构造函数D.析构函数24.对类的构造函数和析构函数描述正确的是_。(分数:2.50)A.构造函数可以重载,析构函数不能重载B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载25.下面程序的运行结果为_。 #includeiostream using namespace std; class A static int n; public: A()n=1; A(int num)n=num; void print()coutn; ; in

9、t A:n=2; void main() A a, b(3); a.print(); b.print(); coutendl; (分数:2.50)A.11B.13C.23D.3326.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是_。(分数:2.50)A.一元成员运算符B.二元成员运算符C.一元友元运算符D.B 或 C27.下面对于友元函数描述正确的是_。(分数:2.50)A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员28.假设可以用 p.a 的形式访问派生类对象 p 的基类成员 a,则 a 是

10、_。(分数:2.50)A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员29.下面程序的运行结果是_。 #includeiostream using namespace std; class base protected: int a; public: base()cout“0“; ; class basel:virtual base public: base1()cout“1“; ; class base2:virtual base public: base2()cout“2“; ; class derived:public base1, public

11、base2 public: derived()cout“3“; ; void main() derived obj; coutendl; (分数:2.50)A.0123B.3120C.0312D.301230.下列程序中画线处应填入的语句是_。 class Base public: void fun()cout“Base of fun“endl; ; class Derived:public Base void fun() _ /显示基类的成员函数 fun cout“Derived of fun“endl; ;(分数:2.50)A.fun();B.Base.fun();C.Base:fun()

12、;D.Base-fun;31.下列关于多态性的描述,错误的是_。(分数:2.50)A.C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现D.实现运行时多态性的机制称为动态绑定32.语句“ofstream f(“SALARY.DAT“, ios:app|ios:binary);”的功能是建立流对象 f,试图打开文件SALARY.DAT 并与之连接,并且_。(分数:2.50)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指

13、针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件33.下面程序的运行结果是_。 #includeiostream using namespace std; void main() int num=1; int ref=ref+2; coutnum; num=num+3; coutrefendl; (分数:2.50)A.13B.16C.36D.3334.一个类的友元函数能够访问该类的_。(分数:2.50)A.私有成员B.保护成员C.公有成员D.所有成员35.下面程序的输出结果是_。 #includeiostream using namespace

14、 std; class example int a; public: example(int b)a=b+; void print()a=a+1; couta“; void print()constcouta“; ; void main() example x(3); const example y(2); x.print(); y.print(); (分数:2.50)A.22B.43C.42D.3236.有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIV

15、ED:protected MyBASE protected: int j; public: void set(int m, int n)MyBASE:set(m); j=n; int get()constreturn MyBASE:get()+j; ; 则类 MyDERIVED 中保护的数据成员和成员函数的个数是_。(分数:2.50)A.4B.3C.2D.137.下列关于虚函数的说明中,正确的是_。(分数:2.50)A.虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数38.下列有关继承和派生的叙述中,正确的是_。(分数:2.

16、50)A.如果一个派生类私有继承其基类,则该派生类不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类39.已知在一个类体中包含如下函数类型: VOLUME operator-(VOLUME)const; 下列关于这个函数的叙述中错误的是_。(分数:2.50)A.这是运算符“-”的重载运算符函数B.这个函数所重载的运算符是一个一元运算符C.这是一个成员函数D.这个函数不改变类的任何数据成员的值40.有如下程序: #includeiostream using namespace std;

17、class Complex double re, im; public: Complex(double r, double i):re(r), im(i) double real()constreturn re; double image()constreturn im; Complex im+=a.im; return *this; ; ostream int main() Complex x(1, -2), y(2, 3); cout(x+=y)endl; return 0; 执行这个程序的输出结果是_。(分数:2.50)A.(1, -2)B.(2, 3)C.(3, 5)D.(3, 1)二

18、级 C+-187 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.在待排序的元素序列基本有序的前提下,效率最高的排序方法 0 是_。(分数:2.50)A.冒泡排序 B.选择排序C.快速排序D.归并排序解析:解析 从平均时间性能而言,快速排序最佳,其所需时间最少,但快速排序在最坏情况下的时间性能不如堆排序和归并排序。当序列中的记录基本有序或元素个数较少时,冒泡排序和简单选择排序为最佳排序方法。2.算法空间复杂度是指_。(分数:2.50)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间 解析

19、:解析 一个算法的空间复杂度,一般是指执行这个算法所需要的内存空间。3.下列关于队列的叙述中正确的是_。(分数:2.50)A.在队列中只能满插入数据B.在队列中只能删除数据C.队列是先进先出的线性表 D.队列是先进后出的线性表解析:解析 队列是指允许在一端进行插入、而在另一端进行删除的线性表。队列义称为“先进先出”或“后进后出”的线性表,它体现了“先来先服务”的原则。在队列中,队尾指针与排头指针共同反映了队列中元素动态变化的情况。4.设树 T 的度为 4,其中度为 1,2,3,4 的结点个数分别为 4,2,1,1。则 T 中的叶子结点数为_。(分数:2.50)A.8 B.7C.6D.5解析:解

20、析 将题中所述的树图形表示,叶子结点数目测可得。5.在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送_。(分数:2.50)A.调用语句B.命令C.口今D.消息 解析:解析 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎样完成这些处理。6.下面对对象概念描述错误的是_。(分数:2.50)A.任何对象都必须有继承性 B.对象是属性和方法的封装体C.对象间的通信靠消息传递D.操作是对象的动态属性解析:解析 对象可以做的操作表示它的动态行为,在面向

21、对象解析和面向对象设计中,通常把对象的操作也称为方法或服务。属性在设计对象是确定,一般只能通过执行对象的操作来改变。对象有一些基本特点:标识唯一性、分类性、多态性、封装性、模块独立性好。而继承是使用已有的类定义作为基础建立新类的定义技术。7.下面不属于软件设计原则的是_。(分数:2.50)A.抽象B.模块化C.自底向上 D.信息隐蔽解析:解析 软件设计原则包括抽象、模块化、信息隐蔽和模块独立性。8.程序流程图(PFD)中的箭头代表的是_。(分数:2.50)A.数据流B.控制流 C.调用关系D.组成关系解析:解析 “”或“”表示控制流,“”表示加工步骤,“”表示逻辑条件。9.下述关于数据库系统的

22、叙述中正确的是_。(分数:2.50)A.数据库系统减少了数据冗余 B.数据库系统避免了一切冗余C.数据库系统中数据的一致性是指数据类型的一致D.数据库系统比文件系统能管理更多的数据解析:解析 数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。10.关系表中的每一横行称为一个_。(分数:2.50)A.元组 B.字段C.属性D码解析:解析 二维表由表框架及表的元组组成。在表框架中按行可以存放数据,每行数据称为元组。11.C+语言对 C 语言做了很多改进,最根本的变化是_。(分数:2.

23、50)A.增加了一些新的运算符B.允许函数重载,并允许设置默认参数C.规定函数说明符必须用原型D.引进了类和对象的概念 解析:解析 C+和 C 的本质区别是 C+引入了基于对象和面向对象编程的范式。而类和对象概念是面向对象范式的基础。12.以下各选项组中,均是 C+语言关键字的组是_。(分数:2.50)A.public, operator, this B.short, string, staticC.it, while, =D.private, cout, printf解析:解析 B 选项中的 string 不是 C+关键字,C 中的 it 也不是,D 中的 cout 是标准输出流对象,pri

24、ntf 是 C 语言标准库输出函数。只有 A 中的全是 C+关键字。13.下列程序的运行结果为_。 #includeiostream using namespace std; void main() ink a=2; int b=a+1; couta/6endl; (分数:2.50)A.0.66667B.0 C.0.7D.0.66666666解析:解析 由于 a/6 中的两个参数(变量 a 和常数 6)都是 int 类型,因此计算结果也是 int 类型的,而 2/6 转换为 int 类型的值为 0。14.已知有定义: const int D=5; int i=1; double f=0.32;

25、 char c=15; 则下列选项错误的是_。(分数:2.50)A.+i;B.D-;C.c+;D.-f; 解析:解析 只有整数类型可执行前置或后置的 operator+或 operator-运算,因此 D 错误。其中 i和 c 都是变量,因此可以执行前置和后置 operator+运算,变量 D 是常量,但由于后置 operator-的运算作用在临时变量上,因此 D-也是允许的。15.下面程序的运行结果为_。 #includeiostream using namespace std; void reverse(int a, int n) int i, t; for(i=0; in/2; i+)

26、t=ai; ai=an-1-i; an-1-i=t; void main() int b10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10; int i, s=0; reverse(b, 8); for(i=6; i10; i+)s+=bi; couts; (分数:2.50)A.22 B.10C.34D.30解析:解析 Reverse 函数的作用是将 a 数组中的 n 个变量的值翻转,即 a0和 an-1值交换,a1和an-2值交换,依此类推。Main 函数中,reverse(b,8)翻转了 b 数组的前 8 个值,此后 b 的值为8, 7, 6, 5, 4, 3, 2, 1,

27、9, 10,因此最后将 b6到 b10间的数相加结果为 22。16.下面关于 break 语句的描述中,不正确的是_。(分数:2.50)A.break 可以用于循环体内B.break 语句可以在 for 循环语句中出现多次C.break 语句可以在 switch 语句中出现多次D.break 语句可用于 if 条件判断语句内 解析:解析 break 语句用于跳出循环或者结束 switch 语句,不能用于 if 语句。17.存在定义 int a10, x, *pa;,若 pa=,下列的哪个选项和其他 3 个选项不是等价的?_。(分数:2.50)A.x=*pa; B.x=*(a+1);C.x=*(

28、pa+1);D.x=a1;解析:解析 四个选项中只有 A 的 x 是数组 a 中 a0元素的值,其他的都是 a1元素的值。18.若已定义: int a=(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, *P=a, i; 其中 0i9,则对 a 数组元素不正确的引用是_。(分数:2.50)A.ap-aB.*( int c; class A private: int a; static int b; public: A()a=0; c=0; void seta()a+; void setb()b+; void setc()c+; void display()couta“b“c; ; i

29、nt A:b=0; void main() A a1, a2; a1.seta(); a1.setb(); a1.setc(); a2.seta(); a2.setb(); a2.setc(); a2.display(); (分数:2.50)A.121B.122 C.112D.222解析:解析 set a 成员函数的 a 被解析为成员变量 a,set b 中的 b 被解析为类的静态变量,set c 中的 c 被解析为全局变量 c。因此 set a 影响的是一个对象的变量,而 set b 影响的是真个类共有的变量,而 set c 使全局变量加 1。23.在类的定义中,用于为对象分配内存空间,对类

30、的数据成员进行初始化并执行其他内部管理操作的函数是_。(分数:2.50)A.友元函数B.虚函数C.构造函数 D.析构函数解析:解析 友元函数是能访问类私有成员的函数;虚函数是具有重载能力的函数,析构函数是在对象销毁时调用的函数,只有构造函数才符合题意。24.对类的构造函数和析构函数描述正确的是_。(分数:2.50)A.构造函数可以重载,析构函数不能重载 B.构造函数不能重载,析构函数可以重载C.构造函数可以重载,析构函数也可以重载D.构造函数不能重载,析构函数也不能重载解析:解析 构造函数可以重载,以实现不同的构造要求,而析构函数的调用只是为了回收对象占用的资源,只有一种形式,不能重载。25.

31、下面程序的运行结果为_。 #includeiostream using namespace std; class A static int n; public: A()n=1; A(int num)n=num; void print()coutn; ; int A:n=2; void main() A a, b(3); a.print(); b.print(); coutendl; (分数:2.50)A.11B.13C.23D.33 解析:解析 两个构造函数 A()和 A(int)中的 n 都被解析为类 A 的静态变量 n。最后一次改变静态变量的是 b(3)的构造函数,将 n 设置为 3。A

32、类的 print()函数的 n 也指向静态变量 n,因此结果是 33。26.在重载一个运算符时,如果其参数表中有一个参数,则说明该运算符是_。(分数:2.50)A.一元成员运算符B.二元成员运算符C.一元友元运算符D.B 或 C 解析:解析 二元的成员操作符的第一个参数是类对象本身,因此 B 和 C 都有可能。27.下面对于友元函数描述正确的是_。(分数:2.50)A.友元函数的实现必须在类的内部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性 D.友元函数不能访问类的私有成员解析:解析 友元函数由于被赋予访问函数私有变量的权限,因此会在一定程度上破坏类的封装性。28.假设可

33、以用 p.a 的形式访问派生类对象 p 的基类成员 a,则 a 是_。(分数:2.50)A.私有继承的公有成员B.公有继承的私有成员C.公有继承的保护成员D.公有继承的公有成员 解析:解析 私有继承的私有成员的访问权限为私有,因此不能直接由外部访问。而基类的私有成员被继承后还是私有,也不能访问。保护成员被公有继承后只能由派生类内部访问。只有公有继承的公有成员权限仍是共有。29.下面程序的运行结果是_。 #includeiostream using namespace std; class base protected: int a; public: base()cout“0“; ; class

34、 basel:virtual base public: base1()cout“1“; ; class base2:virtual base public: base2()cout“2“; ; class derived:public base1, public base2 public: derived()cout“3“; ; void main() derived obj; coutendl; (分数:2.50)A.0123 B.3120C.0312D.3012解析:解析 根据标准规定,虚拟继承的基类的构造函数将由“最派生类”调用,而其他非虚拟基类对虚拟基类的构造函数都将被压制。这里的“最

35、派生类”是 derived,其构造函数调用时,虚拟基类 base的构造函数被调用,然后是 base1 和 base2 的构造函数,因为他们对 base 的构造函数调用都被压制,因此不会输出两个 0。最后是 derived 本身的构造函数。结果是 0123。30.下列程序中画线处应填入的语句是_。 class Base public: void fun()cout“Base of fun“endl; ; class Derived:public Base void fun() _ /显示基类的成员函数 fun cout“Derived of fun“endl; ;(分数:2.50)A.fun()

36、;B.Base.fun();C.Base:fun(); D.Base-fun;解析:解析 派生类的同名非虚拟函数会覆盖基类的所有同名非虚拟函数,此时调用基类函数必须添加类限定符,因此 C 正确。31.下列关于多态性的描述,错误的是_。(分数:2.50)A.C+语言的多态性分为编译时的多态性和运行时的多态性B.编译时的多态性可通过函数重载实现C.运行时的多态性可通过模板和虚函数实现 D.实现运行时多态性的机制称为动态绑定解析:解析 通过模版实现的多态是编译时多态。32.语句“ofstream f(“SALARY.DAT“, ios:app|ios:binary);”的功能是建立流对象 f,试图打

37、开文件SALARY.DAT 并与之连接,并且_。(分数:2.50)A.若文件存在,将文件写指针定位于文件尾;若文件不存在,建立一个新文件 B.若文件存在,将其置为空文件;若文件不存在,打开失败C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件D.若文件存在,打开失败;若文件不存在,建立一个新文件解析:解析 ios:app 标志意思是“附加文件”,文件存在时将输入流的内容附加到文件末尾,否则建新文件。33.下面程序的运行结果是_。 #includeiostream using namespace std; void main() int num=1; int ref=ref+

38、2; coutnum; num=num+3; coutrefendl; (分数:2.50)A.13B.16C.36 D.33解析:解析 ref 是 num 的非常量引用,相当于是 num 的别名,所有的变动都直接作用于变量 num。34.一个类的友元函数能够访问该类的_。(分数:2.50)A.私有成员B.保护成员C.公有成员D.所有成员 解析:解析 友元函数被赋予访问类的所有成员的能力。35.下面程序的输出结果是_。 #includeiostream using namespace std; class example int a; public: example(int b)a=b+; vo

39、id print()a=a+1; couta“; void print()constcouta“; ; void main() example x(3); const example y(2); x.print(); y.print(); (分数:2.50)A.22B.43C.42 D.32解析:解析 x 是普通的对象,而 y 是个常数对象,由于 print 成员函数对常数成员重载,因此 x 调用的 print 是 void example:print()成员函数,y 调用的是 void example:print()const 成员函数。结果为 C。36.有如下类声明: class MyBA

40、SE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIVED:protected MyBASE protected: int j; public: void set(int m, int n)MyBASE:set(m); j=n; int get()constreturn MyBASE:get()+j; ; 则类 MyDERIVED 中保护的数据成员和成员函数的个数是_。(分数:2.50)A.4B.3C.2 D.1解析:解析 基类的私有成员(即 int k)无论如何也不会在派生类中可见,公有成员和

41、保护成员经过保护继承后将成为派生类的保护成员。但由于在派生类中定义了同名、同参数函数,基类成员函数 get 的作用域不能达到派生类。而依照参数的不同可以分辨 set 函数的位置,基类成员函数 set 在派生类中可以直接调用。因此,类 MyDERIVED 具有保护成员函数 set(继承而来)和保护数据成员 j(本身定义)。37.下列关于虚函数的说明中,正确的是_。(分数:2.50)A.虚基类继承的函数都是虚函数B.虚函数不得是静态成员函数 C.只能通过指针或引用调用虚函数D.抽象类中的成员函数都是虚函数解析:解析 虚基类与虚函数没有必然联系,选项 A 错误。虚函数不得是静态成员函数,也不能是内联

42、函数和构造函数,选项 B 正确。虚函数既可以采用多态调用(通过指针或引用),也可以通过非多态调用(通过对象直接调用),选项 C 错误。有纯虚函数的类才是抽象类,但抽象类的成员函数并不都是纯虚函数,更不是虚函数,选项 D 错误。38.下列有关继承和派生的叙述中,正确的是_。(分数:2.50)A.如果一个派生类私有继承其基类,则该派生类不能访问基类的保护成员B.派生类的成员函数可以访问基类的所有成员C.基类对象可以赋值给派生类对象D.如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类 解析:解析 选项 A 中,如果一个派生类私有继承其基类,则该基类的保护成员成为派生类的私有成员,是可以访

43、问的。选项 B 中,派生类的成员函数只能访问到基类的公有和保护成员。选项 C 中,基类对象无法赋值给派生类对象。39.已知在一个类体中包含如下函数类型: VOLUME operator-(VOLUME)const; 下列关于这个函数的叙述中错误的是_。(分数:2.50)A.这是运算符“-”的重载运算符函数B.这个函数所重载的运算符是一个一元运算符 C.这是一个成员函数D.这个函数不改变类的任何数据成员的值解析:解析 重载的运算符保持原有的操作数个数不变,“-”仍然是二元运算符,B 错误。40.有如下程序: #includeiostream using namespace std; class

44、Complex double re, im; public: Complex(double r, double i):re(r), im(i) double real()constreturn re; double image()constreturn im; Complex im+=a.im; return *this; ; ostream int main() Complex x(1, -2), y(2, 3); cout(x+=y)endl; return 0; 执行这个程序的输出结果是_。(分数:2.50)A.(1, -2)B.(2, 3)C.(3, 5)D.(3, 1) 解析:解析 “+=”在复数类中被重载,变成实部和虚部分别相加,并用结果修改类中的成员实部和虚部。故 x+=y 的结果为(3, 1)。而“”被重载,输出格式符合复数的坐标形式。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1