[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc

上传人:eastlab115 文档编号:492451 上传时间:2018-11-30 格式:DOC 页数:26 大小:66.50KB
下载 相关 举报
[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc_第1页
第1页 / 共26页
[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc_第2页
第2页 / 共26页
[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc_第3页
第3页 / 共26页
[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc_第4页
第4页 / 共26页
[计算机类试卷]2004年9月国家二级(C++)笔试真题试卷及答案与解析.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

1、2004 年 9月国家二级( C+)笔试真题试卷及答案与解析 1 下面叙述正确的是 ( A)算法的执行效率与数据的存储结构无关 ( B)算法的空间复杂度是指算法程序中指令 (或语句 )的条数 ( C)算法的有穷性是指算法必须能在执行有限个步骤之后终止 ( D)以上三种描述都不对 2 以下数据结构中不属于线性数据结构的是 ( A)队列 ( B)线性表 ( C)二叉树 ( D)栈 3 在一棵二叉树上第 5层的结点数最多是 ( A) 8 ( B) 16 ( C) 32 ( D) 15 4 下面描述中,符合结构化程序 设计风格的是 ( A)使用顺序、选择和重复 (循环 )三种基本控制结构表示程序的控制

2、逻辑 ( B)模块只有一个入口,可以有多个出口 ( C)注重提高程序的执行效率 ( D)不使用 goto语句 5 下面概念中,不属于面向对象方法的是 ( A)对象 ( B)继承 ( C)类 ( D)过程调用 6 在结构化方法中,用数据流程图 (DFD) 作为描述工具的软件开发阶段是 ( A)可行性分析 ( B)需求分析 ( C)详细设计 ( D)程序编码 7 在软件开发中,下面任务不属于设计阶段的是 ( A)数据结构设 计 ( B)给出系统模块结构 ( C)定义模块算法 ( D)定义需求并建立系统模型 8 数据库系统的核心是 ( A)数据模型 ( B)数据库管理系统 ( C)软件工具 ( D)

3、数据库 9 下列叙述中正确的是 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库设计是指设计数据库管理系统 ( C)数据库技术的根本目标是要解决数据共享的问题 ( D)数据库系统中,数据的物理结构必须与逻辑结构一致 10 下列模式中,能够给出数据库物理存储结构与物理存取方法的是 ( A)内模式 ( B)外模式 ( C)概念模式 ( D)逻辑模式 11 关于面向对象的程序设计方法,下列说法正确的是 ( A) “封装性 ”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理 ( B) “多态性 ”指的是对象的状态会根据运行时要求自动变化 ( C)基类的私有成员在派生类

4、的对象中不可访问,也不占内存空间 ( D)在面向对象的程序设计中,结构化程序设计方法仍有着重要作用 12 判断字符型变量 ch 是否为大写英文字母,应使用表达式 ( A) ch A _y yOff void Print() const cout ( _x , _y ) endl; private: int_x_y; ; 下列语句中会发生编译错误的是 ( A) Pointpt; pt;Print(); ( B) const Point pt;pt Print(); ( C) Pointpt;pt.Move(1, 2); ( D) const Point pt;pt.Move(1, 2); 34

5、有以下类定义 class MyClass private: int id; char gender; char*phone; public: MyClass(): id(0), gender(#), phone(NULL) MyClass(int no,char ge=#, char*ph=NULL) id no;gender=ge; phone=ph; ; 下列类对象定义语句中错误的是 ( A) MyClass myObj; ( B) MyClass myObj(11, “13301111155“); ( C) MyClass myObj(12, m); ( D) MyClass myObj

6、(12); 35 有以下程序 #include iostream using namespace std; class Complex public: Complex(double r=O,double i 0): re(r),im(i) double real() const return re; double imag()const return im; Complex operator (Complex C) const return Complex (re c.re,im c.im); private: double re,im; ; int main() Complex a=Comp

7、lex(1, 1) Complex (5); cout a real() a.imag() i endl; retum 0; 程序执行后的输出结果是 ( A) 6 6i ( B) 6 1i ( C) 1 6i ( D) 1 1i 36 算法的复杂度主要包括【 】复杂度和空间复杂度。 37 数据的逻辑结构在计算机存储空间中的存放形式称为数据的【 】 38 若按功能划分,软件测试的方法通 常分为白盒测试方法和【 】测试方法。 39 如果一个工人可管理多个设备,而一个设备只被一个工人管理,则实体 “工人 ”与实体 “设备 ”之间存在【 】关系。 40 关系数据库管理系统能实现的专门关系运算包括选择、

8、连接和【 】。 41 设有定义语句: int a=12;,则表达式 a* 2 3的运算结果是【 】。 42 从实现的角度划分, C所支持的两种多态性分别是【 】时的多态性和运行时的多态性。 43 将一个函数声明为一个类的友元函数必须使用关键字【 】。 44 请按下面注释的提示,将类 B的 构造函数定义补充完整。 C1assA int a; public: A(int aa O)a aa; ; class B: public A int b; A c; public: /用 aa初始化基类 A,用 aa 1初始化类对象成员 c B(int aa:【 】 b aa 2 ; 45 下列程序的输出结果

9、是【 】。 #inClude iostream using namespace std; int main() int i 5; int r 7; cout i endl; return0; 46 下列程序的输出结果是【 】。 #inClude iostream using namespace std; class Test public: Test() cnt; Test()cnt; static int Count() return cnt; private: static int cnt; ; int Test:cnt 0; int main() cout Test:Count() ”;

10、 Test t1, t2; Test*pT3 new Test; Test*pT4 new Test; cout Test:Count() ; delete pT4; delete pT3; cout Test:Count() endl; return 0; 47 下面是用来计算 n的阶乘的递归函数,请将该函数的定义补充完整。 (注:阶乘的定义是 n! n*(n 1)*.*2*1) unsigned fact (unsigned n) if(n 1) retum 1; return【 】; 48 下列程序的输出结果是【 】 #include iostream using namespace s

11、td; template typenameT Tfun(Ta,TB) return (a B) ?a:b; int main () cout fun(3, 6) , fun(3.14F, 6.28F) end1; return 0; 49 与成员访问表达式 p name等价的表达式是【 】。 50 下列程序的输出结果是【 】。 #include iostream using namespace std; class base public: int n; base (int x)n x; virtual void set (int m)n m; cout n ; ; class deriveA

12、: public base public: dericeA(int x): base(x) void set(int m)n m; cout n ; ; Class deriveB: public base public: deriveB(int x): base(x) void set(int m)n m; cout n ; ; int main() deriveA d1(1); deriveB d2(3); base*pbase; pbase &d1; pbase set(1); pbase &d2; pbase set(2); return 0; 2004 年 9月国家二级( C+)笔试

13、真题试卷答案与解析 1 【正确答案】 C 【试题解析】 A选项错误,因为算法的执行效率与算法执行过程中所需基本运算的执行次数有关; B 选项错误,原因是算法的空间复杂度是指执行这个算法所需要的内存空间; C选项正确,故 D选项不正确。 2 【正确答案】 C 【试题解析】 所谓的线性结构是指:如果一个非空的数据结构满足下列两个条件,即 有且只有一个根结点: 每一个结点最多有一个 前驱,也最多有一个后继。同时满足两个条件的有队列、线性表和栈,而二叉树的结点可能存在两个后继,所以不是线性结构。 3 【正确答案】 B 【试题解析】 根据二叉树的性质,在二叉树的第 K层上,最多有 2的 k-1次方个结点

14、。所以,第五层的结点数最多为 16。 4 【正确答案】 A 【试题解析】 应该选择只有一个入口和一个出口的模块,故 B选项错误;首先要保证程序正确,然后才要求提高效率,故 C选项错误:严格控制使用 goto语句,必要时可以使用,故 D选项错误。 5 【正确答案】 D 【试题解析 】 A、 B、 C属于面向对象方法, D属于面向过程方法,故答案为D。 6 【正确答案】 B 【试题解析】 结构化分析方法是结构化程序设计理论在软件需求分析阶段的运用。而结构化分析就是使用数据流图 (DFD) 、数据字典 (DD) 、结构化英语、判定表和判定树等工具,来建立一种新的、称为结构化规格说明的目标文档。所以数

15、据流程图是在需求分析阶段使用的。 7 【正确答案】 D 【试题解析】 数据结构设计、给出系统模块结构以及定义模块算法都属于设计阶段,而定义需求并建立系统模型属于分析阶段。 8 【 正确答案】 B 【试题解析】 数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,因此数据库管理系统是数据库系统的核心。 9 【正确答案】 C 【试题解析】 A选项,数据库系统需要操作系统的支持,必不可少,故其叙述不正确。 B 选项错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。 D选项也不对,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。正

16、确答案为 C。 10 【正确答案】 A 【试题解析】 能够给出数据库物理存 储结构与物理存取方法的是内模式。外模式是用户的数据视图,也就是用户所见到的数据模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。没有逻辑模式这一说法。正确答案为 A。 11 【正确答案】 D 【试题解析】 本题考核 C程序的基本框架。 “封装性 ”指将数据和算法捆绑成一个整体,而不是将不同类型的相关数据组合在一起。 C中的多态性是指一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务。基类的私有成员在派生类的对象中不可访问,但是也占据内存空间。 C同时支持结构化和

17、面向对象两种程序设计的基本框架,所以在面向对象的程序设计中,结构化程序设计方法仍有着重要作用。 12 【正确答案】 D 【试题解析】 本题考核 C表达式类型及求值规则。 ch 为大写字母的条件是大于等于 A且小于等于 Z。 13 【正确答案】 C 【试题解析】 本题考核 C表达式类型及求值规则。自加运算符是单目运算符,运算对象必须为变量,不能是常量和表达式, C选项中的对象是表达式,故错误。 14 【正确答案】 D 【试题解析】 本题考核 C语 句中的 switch 语句。 switch 语句也称为开关语句,用于有多重选择的场合,测试某一个变量具有多个值时所执行的动作。 switch语句中每个

18、 case语句只是一个入口标号,并不能确定执行的终点,因此,每个case分支的最后应该加 break 语句,用来结束这个 switch 结构,否则,会从入口点开始,一直执行到 switch 结构的结束点。若键盘输入 1, n 的值被赋为 1,进入第一个分支,没有 break 跳出,然后进入第二个分支,执行 “cout 1”输出 1,然后进入第 3、 4个分支,执行 “cout 2; ”,然后执行 break,跳出 switch 语句。所以最后输出为 12。 15 【正确答案】 A 【试题解析】 本题考核 while语句和 if 语句, while语句中 if 语句的作用是将小写字母变成大写字母

19、输出,所以 main 函数的字符串通过 while语句全部输出为大写字母。 16 【正确答案】 A 【试题解析】 本题考核引用的定义。 C的引用是一种赋值、发送和返回复杂数据结构的方法,应用这种方法,系统不需要负担额外的开销,节省内存空间。建立引用的格式为:类型 &引用名已定义的变量名;。所以只有 A选项是符合要 求的。 17 【正确答案】 D 【试题解析】 本题考核函数的定义方法和调用方法。说明一个函数的格式为:函数类型函数名, (下函数参数表 );在 C中,允许在函数的说明或定义时给一个或多个参数指定默认值。但一旦为某个给定参数定义了缺省值,必须为后继的所有参数也定义缺省值。由此可知,选项

20、 D是错误的。 18 【正确答案】 B 【试题解析】 本题考核函数重载。所谓函数重载,是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数仲,这些函数的名字相同,但是函数的参数的类型不同。 这就是说,进行函数重载时,要求同名函数在参数个数上不同,或者参数类型上不同。不可以根据函数返回值类型来重载函数。 A选项中定义只是函数的返回类型不同,不符合重载的条件, C选项也不符合。对于 D选项,形参列表中带有默认参数,如果原型的最后一个也带有默认参数,则会造成不知道该调用哪个函数的错误。 19 【正确答案】 D 【试题解析】 本题考核变量的作用域、生存周期和存储类别 (自动、静态、存储器、

21、外部 )。题中即定义全局变量 i又在函数 fun内部定义了局部静态变量 i,当进入函数 fun 里面的大括号时,局部静态变量 i有效,所以输出 1,然后局部静态变量 i加 1,出了里面的大括号后,全局变量 i有效,所以输出 0。同理,第二次调用 fun 后,输出 2和 0。 20 【正确答案】 C 【试题解析】 本题考核形式参数与实在参数,参数值的传递。第一个参数是地址传递,所以在调用时要传入实参的地址,第二个参数引用传递,调用时直接写上实参即可。 21 【正确答案】 B 【试题解析】 本题考核构造函数和析构函数。题中定义了类 MyClass的对象 a,对象数据 b,所以调用了构造函数 3次,

22、输出 111。然后定义了对象指针 *p2,由于指针没有实例话,所以不会调用构造函数。 22 【正确答案】 A 【试题解析】 本题考核友元类和友元函数。友元关系是单向的,并且只在两个类之间有效。即使类 X是类 Y的友元,类 Y是否是类 X的友元也要看类 X中是否有相应的声明。即友元关系不具有交换性,所以 A选项的说法是错误的。类的友元函数可以直接访问该类的所有成员;类 A是类 B 的友元类,那么类 A的所有成员函数都是类 B 的友元函数。 23 【正确答案】 B 【试题解析】 本题考核动态存储分配。用于动态分配的内存空间称为堆内存,它通常由操作系统进行管 理且数量有限,其内存空间可以被初始化。若

23、程序不断分配堆内存,则可能耗尽,在这种情况下,系统无法再对 new 提出的内存分配请求给予满足,此时 new会返回空指针 NULL,表示动态存储分配操作失败,不会造成系统崩溃。在 C程序中由 new分配的动态内存空间必须通过 delete运算符释放。 24 【正确答案】 B 【试题解析】 本题考核 C的拷贝构造函数。调用拷贝构造函数的情况为:一个新对象被另一个已存在的同类型对象初始化:当一个对象作为实参传递给函数时为初始化形参,要调用拷贝构造函数。在函数值返回时形 参的生命期结束时它的结构函数被调用;在函数返回一个对象时调用拷贝构造函数。符合以上条件的有:用对象。 obj1来初始化。 obj3

24、; obj3作为实参被传入;函数 fun返回一个对象时;系统用返回值初始化一个匿名对象时调用了拷贝构造函数。总共调用 4次。 25 【正确答案】 C 【试题解析】 本题考核派生类的定义和访问权限。当类的继承方式为公有继承时,基类的公有成员和保护成员的访问属性在派生类中不变,而基类私有成员不可访问。即基类的公有成员和保护成员分别作为派生类的公有成员和保护成员,派生类的其他成员可以直 接访问它们。 26 【正确答案】 D 【试题解析】 本题考核虚函数。在 C语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现。其实现机制称为静态联编 (也译为静态绑定 )

25、,即在编译阶段决定执行哪个同名的被调用函数:运行时的多态性是通过体现的,其实现机制称为动态联编 (也译为动态绑定 ),即在编译阶段不能决定执行哪个同名的被调用函数,只在执行阶段才能依据要处理的对象类型来决定执行哪个类的成员函数。用来实现运行时多态性的是虚函数。 27 【正确答案】 C 【试题解析】 本题考核虚基类。 C中,通过虚拟基类所派生的类,在所产生的对象中,只包含了一个和其他类共享的基础对象,也就是说,从同一个基类中以虚拟方式派生的所有类,在它们所产生的对象里,不会有一份基础对象,而只是在内存里保留一份基础对象,而派生类中只保留指向此基础对象的指针,这样就不会同时有两份基类对象的情形发生

26、。用虚基类可以解决二义性问题。但是实现运行时的多态性是虚函数。 28 【正确答案】 A 【试题解析】 本题考核纯虚函数的声明。声明纯虚函数的一般格式为: virtual类型函 数名 (参数表 ) 0; 29 【正确答案】 A 【试题解析】 本题考核运算符重载。 C把重载的运算符视为特殊的函数,称为运算符函数,函数名就是在运算符前加上保留字 operator。运算符重载的定义格式:返回类型 operator 运算符号 (参数说明 ); 运算符 “一 ”是二元运算符, A选项中重载函数的形参列表都 double,而重载函数的返回类型为类 Volume,显然是错误的。 30 【正确答案】 C 【试题

27、解析】 本题考核模板的声明。模板声明的开始部分为: template类 型形参表。其中,类型形参表可以包含基本数据类型,也可以包含类类型。类型形参需要加前缀 class。如果类型形参多于一个,则每个类型形参都要使用class。形参表中的参数是惟一的,而且至少在函数定义体中出现厂次。形参表中至少有一个形参的类型必须用类型形参表中的形参来定义。所以只有 C选项的声明是正确的。 31 【正确答案】 C 【试题解析】 本题考核 C的文件 I/O操作。函数 good()表示刚进行的操作成功时返回 true,否则返回 false,所以可以通过类 ofstream的对象 outfile调用good()函数来

28、检测刚才文件打开是否成功。题中在建立文件流对象的同时打开文件,若打开失败则返回 fail。所以 “outfile”也可以用作判断打开文件成功与否的条件。 32 【正确答案】 B 【试题解析】 本题考核运算符重载。 C中重载输入流运算符和输出流运算符只能作为非类成员函数重载,且必须使用如下原形: istream& operator (istream&类名 &); ostream& operator (ostream&,类名 ); 33 【正确 答案】 D 【试题解析】 本题考核常对象、常数据成员与常成员函数。如果将一个对象说明为常对象,则通过该常对象只能调用它的常成员函数,不能调用其他的成员函数

29、, D选项中对象 pt为常对象,而成员函数 Move()不是常成员函数,所以这样调用会发生编译错误。 34 【正确答案】 B 【试题解析】 本题考核构造函数的应用。对象建立用初始化列表对数据成员进行时,列表中的参数类型要与构造函数中形参类型一致。 B选项中第二个参数为“13301111155“是字符串,而构造函数中第二个形参为 char型,两者不一 致造成错误。 35 【正确答案】 B 【试题解析】 本题考核类与对象、运算符重载。运算符 “ ”在类 Complex中作为成员函数重载,实现两个对象的数据成员的相加。所以 main 函数中语句“Complex a Complex(1, 1) Com

30、plex(5); ”的作用相当于 “Complex a(15, 1); ”即对象 a的数据成员 re的值为 6, imag的值为 1,所以输出为 6 1i。 36 【正确答案】 时间 【试题解析】 算法的复杂度主要指时间复杂度和空间复杂度。所谓算法的时间复杂度,是指执行算 法所需要的计算工作量;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。 37 【正确答案】 存储结构 (或物理结构、或物理存储结构 ) 【试题解析】 时间数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构。 38 【正确答案】 黑盒 (或黑箱 ) 【试题解析】 软件测试的方法分为白箱测试方法和黑箱测试方法。

31、白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,白箱测试用例的设计准则有:语句覆盖、分支覆盖、条件覆盖和组合条件覆盖;黑箱测试方法完全不考虑程序的内部结构和内部特征,而 只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法。 39 【正确答案】 一对多 (或 1对多、或 1:M、或 1:N,其中 M、 N大小写均可 ) 【试题解析】 实体之间的联系可以归结为三类:一对一的联系,一对多的联系,多对多的联系。设有两个实体集 E1和 E2,如果 E2中的每一个实体与 E1中的任意个实体 (包括零个 )有联系,而 E1中的每一个实体最多与 E2中的一个实体有

32、联系,则称这样的联系为 “从 E2到 E1的一对多的联系 ”,通常表示为 “1:n的联系 ”。由此可见,工人和设备之间是 一对多关系。 40 【正确答案】 投影 【试题解析】 关系数据库管理系统的专门关系运算包括选择、连接和投影。选择运算是在指定的关系中选取所有满足给定条件的元组,构成一个新的关系,而这个新的关系是原关系的一个子集:投影运算是在给定关系的某些域上进行的运算。通过投影运算可以从一个关系中选择出所需要的属性成分,并且按要求排列成一个新的关系,而新关系的各个属性值来自原关系中相应的属性值:连接运算是对两个关系进行的运算,其意义是从两个关系的笛卡尔积中选出满足给定属性间一定条件的那些元

33、组。 41 【正确答 案】 60 【试题解析】 本题考核 C运算符运算优先级和结合性。表达式 “a* 2 3; ”先计算 “2 3”得到 5,然后计算 a* 5,得到 a的值为 60。 42 【正确答案】 编译 【试题解析】 本题考核 C的多态性。一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务,这就是所谓多态性。在C语言中,多态性可分为两类:编译时的多态性和运行时的多态性。编译时的多态性是通过函数重载和模板体现。其实现机制称为静态联编 (也译为静态绑定 ),即在编译阶段决定执行哪个同名的 被调用函数。运行时的多态性是通过体现的,其实现机制称为动态联编 (也译

34、为动态绑定 ),即在编译阶段不能决定执行哪个同名的被调用函数,只在执行阶段才能依据要处理的对象类型来决定执行哪个类的成员函数。 43 【正确答案】 friend 【试题解析】 本题考核友元函数。定义友元函数的方式是在类定义中用关键字friend 说明该函数,其格式为: friend类型友元函数名 (参数表 ); 44 【正确答案】 A(aA),c(aa+1)或 c(aa+1), A(aA) 【试题解析】 本题考核派生类构造函数 的定义。题中要求用明初始化基类 A,用aa+1初始化类对象成员 c,用的初始化列表的形式,即 A(aA), c(aa+1)或c(aa+1), A(aA) 。 45 【正

35、确答案】 7 【试题解析】 本题考核引用的概念和使用。 C的引用是一种赋值、发送和返回复杂数据结构的方法,应用这种方法,系统不需要负担额外的开销,节省内存空间。在程序中对引用的存取都是对它所引用的变量的存取。题中程序对 i引用 r赋值为 7,则说明 i的值也被赋为 7。 46 【正确答案】 42 【试题解析】 本题考核静态数据成员与静态成员 函数的定义与使用方式。 C中,提出静态成员的目的是为了解决数据共享的问题。一个给定类的每个对象都有类中定义的所有数据的自己的拷贝,如果在类中将数据成员用 static说明为静态的,则这个类成员只有一个拷贝并被这个类的所有对象所共享。类 Test的静态成员

36、cnt,初始值为 0,所以执行语句 “cout Test:Count() ; ”后输出 0。然后程序创建了两个对象 t1 和 t2,以及两个对象指针并调用 new 来初始化指针,所以 cnt的值变成了 4(即此时输出为 4)。然后程序将对象指针 pT4、 pT3 delete了,此时将分别调用析构函数将 cnt的减 1,所以最后输出 cnt的值为 2。 47 【正确答案】 n*fact (n-1) 【试题解析】 本题考核递归函数。一般递归函数由递归出口和递归体两部分组成。递归出口给出了递归终止的条件;递归体给出了递归的方式。题中程序给出了递归出口,但是没有给出递归体,由阶乘的定义可知其递归体应

37、该为 n*fact (n-1)。 48 【正确答案】 3,3.14 【试题解析】 本题考核模板函数的使用。 C编译系统将根据实参表中的实参的类型来确定函数的形参列表中的类型。函 数 fun 的功能是返回两者中较小的值,函数调用 fun(3, 6)返回的值为 3,函数调用 fun(3.14F,6.28F)返回的值为3.14。 49 【正确答案】 (*p) name 【试题解析】 本题考核对象指针的定义与使用。一个基类型为类类型的指针称为对象指针。对于指向对象的指针,下面两种表示方式是等价的: 对象指针名成员名; (*对象指针名 )成员名; 50 【正确答案】 25 【试题解析】 本题考核虚函数的定义和调用。在 C中,一个基类指针 (或引用 )可以用来指向它的派生 类对象,而且通过这样的指针 (或引用 )调用虚函数时,被调用的是该指针 (或引用 )实际所指向的对象类的那个重定义版本。题中基类成员函数 set()被定义成虚函数,而且其派生类 deriveA和 deriveB都有函数 set()的重定义版本,所以通过指针 pbase的两次调用分别调用的是派生类 deriveA和 deriveB中定义的版本,即输出 25。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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