二级C++真题2006年9月答案.doc

上传人:周芸 文档编号:1473739 上传时间:2020-07-12 格式:DOC 页数:13 大小:53.50KB
下载 相关 举报
二级C++真题2006年9月答案.doc_第1页
第1页 / 共13页
二级C++真题2006年9月答案.doc_第2页
第2页 / 共13页
二级C++真题2006年9月答案.doc_第3页
第3页 / 共13页
二级C++真题2006年9月答案.doc_第4页
第4页 / 共13页
二级C++真题2006年9月答案.doc_第5页
第5页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、二级C+真题2006年9月答案真题 120一、选择题(每小题2分,共70分) 下列各题A、B、C、D 四个选项中,只有一个选项是正确的。第1题:参考答案:D答案解析:编程风格是在不影响性能的前提下,有效地编排和组织程序,以提高可读性和可维护性。更直接的说,风格就是意味着要按照规则进行编程。这些规则包括: (1)程序文档化。就是程序文档包含恰当的标识符,适当的注解和程序的视觉组织等。(2)数据说明。出于阅读理解和维护的需要,最好使模块前的说明语句次序规范化。此外,为方便查找,在每个说明语句的说明符后,数据名应按照字典顺序排列。(3)功能模块化。即把源程序代码按照功能划分为低耦合、高内聚的模块。(

2、4)注意goto语句的使用。合理使用goto语句可以提高代码的运行效率,但goto语句的使用会破坏程序的结构特性。因此,除非确实需要,最好不使用goto语句。因此,本题的正确答案是D。第2题:参考答案:A答案解析:从工程管理的角度,软件设计可分为概要设计和详细设计两大步骤。概要设计是根据需求确定软件和数据的总体框架:详细设计是将其进一步精化成软件的算法或表示和数据结构。而在技术上,概要设计和详细设计又由若干活动组成,包括总体结构设计、数据设计和过程设计。因此,本题的正确答案是A。第3题:参考答案:C答案解析:软件生命周期由软件定义、软件开发和软件维护三个时期组成,每个时期又进一步划分为若干个阶

3、段。软件定义时期的基本任务是确定软件系统的工程需求。软件定义可分为软件系统的可行性研究和需求分析两个阶段。软件开发时期是具体设计和实现在前一时期定义的软件,它通常由下面五个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久的满足用户的需要。即当软件在使用过程中发现错误时应加以改正:当环境改变时应该修改软件,以适应新的环境;当用户有新要求时应该及时改进软件,以满足用户的新要求。根据上述对软件生命周期的介绍,可知选项C中的软件维护不是软件生命周期开发阶段的任务。因此,本题的正确答案是C。第4题:参考答案:B答案解析:数据库管理系统的三级模式结构由外模式、

4、模式和内模式组成。外模式也称子模式或用户模式,是指数据库用户所看到的数据结构,是用户看到的数据视图。模式也称逻辑模式,是数据库中对全体数据的逻辑结构和特性的描述,是所有用户所见到的数据视图的总和。内模式也称存储模式或物理模式,是指数据在数据库系统内的存储介质上的表示,即对数据的物理结构和存取方法的描述。根据上述介绍可知,数据库系统中用户所见到的数据模式为外模式。因此,本题的正确答案是B。第5题:参考答案:D答案解析:数据库的生命周期可以分为两个阶段:一是数据库设计阶段:二是数据库实现阶段。数据库的设计阶段又分为如下四个子阶段:即需求分析、概念设计、逻辑设计和物理设计。 因此,本题的正确答案是D

5、。第6题:参考答案:C答案解析:本题考查数据库的关系代数运算。R表中只有一个域名A,有两个记录(也叫元组),分别是m和n:S表中有两个域名,分别是B和C,其所对应的记录分别为1和3。注意观察表T,它是由R的第一个记录依次与S的所有记录组合,然后再由R的第二个记录与s的所有记录组合,形成的一个新表。上述运算恰恰符合关系代数的笛卡尔积运算规则。关系代数中,笛卡尔积运算用“x”来表示。因此,上述运算可以表示为T=RS。因此,本题的正确答案为C。第7题:参考答案:D答案解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存

6、储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销:有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、 B、C的说法都是错误的。故本题的正确答案是D。第8题:参考答案:B答案解析:在长度为64的有序线性表中,其中64个数据元素是按照从大到小或从小到大的顺序排列有序的。在这样的线性表中进行顺序查找,最坏的情况就是查找的数据元素不在线性表中或位于线性表的最后。按照线性表的顺序查找算法,首先用被查找的数据和

7、线性表的第一个数据元素进行比较,若相等,则查找成功,否则,继续进行比较,即和线性表的第二个数据元素进行比较。同样,若相等,则查找成功,否则,继续进行比较。依次类推,直到在线性表中查找到该数据或查找到线性表的最后一个元素,算法才结束。因此,在长度为64的有序线性表中进行顺序查找,最坏的情况下需要比较64次。因此,本题的正确答案为B。第9题:参考答案:B答案解析:数据库产生的背景就是计算机的应用范围越来越广泛,数据量急剧增加,对数据共享的要求越来越高。共享的含义是多个用户、多种语言、多个应用程序相互覆盖的使用一些公用的数据集合。在这样的背景下,为了满足多用户、多应用共,享数据的要求,就出现了数据库

8、技术,以便对数据库进行管理。因此,数据库技术的根本目标就是解决数据的共享问题。故选项B正确。第10题:参考答案:A答案解析:二叉树的中序遍历递归算法为:如果根不空,则(1)按中序次序访问左子树;(2)访问跟结点;(3)按中序次序访问右子树。否则返回。本题中,根据中序遍历算法,应首先按照中序次序访问以C为根结点的左子树,然后再访问根结点P,最后才访问以E为根结点的右子树。遍历以C为根结点的左子树同样要遵循中序遍历算法,因此中序遍历结果为ACBD;然后遍历根结点F;遍历以E为根结点的右子树,同样要遵循中序遍历算法,因此中序遍历结果为EG。最后把这三部分的遍历结果按顺序连接起来,中序遍历结果为ACB

9、DFEG。因此,本题的正确答案是A。第11题:参考答案:C答案解析:本题考查了内联函数的概念。在调用的时候,内联函数会像宏函数一样的展开,所以它没有一般函数的参数压栈和退栈操作,所以选项A不正确。在C+中,编译器会将在类的说明部分定义的函数认定为内联函数,即使它们没有用inline说明,所以选项B不正确。内联函数除了比普通函数有更高的执行效率外,跟普通函数没有任何区别,因此选项D也不正确。4个选项中只有C正确。第12题:参考答案:B答案解析:本题考查的是拷贝构造函数的概念。拷贝构造函数发生在,用一个已知的对象初始化一个正在创建的同类对象的时候。因此,选项A、C、D均会调用拷贝构造函数。而选项B

10、没有创建的动作,它会调用的函数是重载的赋值运算符函数。故应该选择B。第13题:参考答案:D答案解析:本题考查的知识点是继承和派生。无论是公有、保护还是私有继承,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B不正确。公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。子类型关系是可以传递的,但是不可逆的。因此,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象。所以选项C不正确。4个选项中,只有选项D正确。第14题:参考答案:A答案解析:本题考查运算符重载的概念。C+语言规定,、()、-以及所有的类型转换运算符只能作为成员函数重载。

11、而要重载为友元函数就必须重载为非成员函数,故应该选择A。第15题:参考答案:D答案解析:本题考查的是模板实参的省略。模板实参在以下几种情况中不能省略: 从模板函数实参表获得的信息有矛盾: 需要获得特定类型的返回值,而不管参数的类型如何; 虚拟类型参数没有出现在模板函数的形参表中; 函数模板含有常规形参。 故本题的正确答案是选项D。第16题:参考答案:A答案解析:本题考查的是getline()函数。getline()函数的原型为:istream_type& getline(char_type*s,streamsizen,char_type delim);,其功能是从当前输入位置开始提取字符存入s

12、所指向的具有n个字节的字符空间中。字符的提取与存储在遇到下列情况时停止: 已提取并存储了n-1个字符; 到流尾,无字符可提取; 下一个要提取的字符等于结束标志字符delim。 因此,选项B、C、D都是正确的。getline()函数不仅可以用宋读取键盘输入的字符串,还可以用来读取文件等数据流,故选项A不正确。第17题:参考答案:D答案解析:本题考查C+语言中的标识符的定义。标识符不是一个随意的字符序列,定义标识符时一般应注意如下几点:第一个字符必须是字母或下划线,中间不能有空格;在第一个字母后,可以是任意字母、下划线和数字组成的字符序列:标识符的长度是任意的,但特定的编译系统能够识别的标识符长度

13、是有限的。一般不要超过 31个字符;标识符中大小写字母是有区别的;用户定义标识符时,不要采用系统的保留字。选项A是保留字:选项B的第一个字符是数字:选项C中的-字符不合法。故应该选择D。第18题:参考答案:D答案解析:本题考查了常指针和指针常量的概念。常指针是指向一个常量的指针变量,即通过该指针无法修改所指向的内容,但其自身的内容可以改变,它是一个变量。选项B中定义的point就是一个合法的常指针。而指针常量是一个常量,即不能修改指针自身的内容,但可以通过该指针修改其所指向的内容。指针常量和其他常量一样,在定义的同时必须初始化。选项D中的指针常量point虽然定义没有错误,但没有初始化,编译无

14、法通过。故应该选择D。第19题:参考答案:A答案解析:本题考查的是if语句。if语句的条件部分是一个表达式而不是语句,因此选项A的说法不正确。第20题:参考答案:B答案解析:本题考查的是指针的运用。因为指针p初始指向数组a的首地址,所以*p返回的是数组元素a0的值,因此选项A的结果是1+9=10;选项B是取指针p往后移动8个单位位置处的值,即a8的值9;选项C中表达式的值和选项A相同,只不过选项C中的表达式会改变a0的值;选项D的值是一个地址值,即数组元素 a8的地址值,该值无法确定。所以,4个选项中只有选项B正确。第21题:参考答案:A答案解析:本题考查的知识点是函数的调用。C+中函数调用的

15、一般形式为: 函数名(实参表) 其中,实参表是以逗号分割的一系列表达式。因此,本例中fun()函数的实参表是由3个表达式组成:a+b、3和max(n-1,b)。故应该选择A。第22题:参考答案:B答案解析:本题考查了类的访问权限。在C+中,类的访问权限一共有3种,分别是: public(公有)、protected(保护)和private(私有)。因此,本题应该选择B。第23题:参考答案:B答案解析:本题考查的是派生类对基类成员的访问。基类的成员有公有(public)、保护 (protected)和私有(private)三种访问属性,类的继承方式也有公有继承(public)、保护继承(prote

16、cted)和私有继承(private)三种。无论哪种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。故应该选择B。第24题:参考答案:C答案解析:本题考查了运算符重载的一些概念。C+语言规定,“”、“*”、“-”、“:”和“?:”这五个运算符不能被重载,因此选项A的说法不正确。运算符函数的返回类型由该运算符所组成的表达式的值的类型来决定的,例如关系和逻辑运算符的返回值应该为bool型,bool型是基本数据类型,所以选项B的说法不正确。运算符重载是针对C+中原有运算符进行的,不可能通过重载创造出新的运算符,所以选项D的说法也不正确。故应该选择C。第25题

17、:参考答案:A答案解析:本题考查了class和typename两个关键字。关键字class除了能用来定义类以外,还能用来声明模板的虚拟类型参数。在用作声明虚拟类型参数时typename与 class可以互换,但不能使用typename宋定义类。因此,选项B和C是错误的。在模板形参表中除了可以用typename或class声明虚拟类型参数外,还可以使用普通类型声明常规参数,所以选项C是错误的。故本题应该选择A。第26题:参考答案:D答案解析:本题考查的是输出的格式控制。本例中,操作符setprecision的作用是设置浮点数的精度;操作符fixed的作用是让浮点数按定点格式输出;操作符setfi

18、ll的作用是设置填充字符;操作符setw的作用是设置输入输出的宽度。宽度设置setw是所有格式设置中惟一的一次有效的设置,即设置的宽度只对其后的一次输入输出操作有效,而其余操作符设置后会一直有效,直到再次设置时为止。因此,若下划线处什么也不填,则输出的结果应该为*12.34534.567。和要求的输出相比较,只缺少两个填充字符*。由此可知,下划线处应该填一个让34.567的输出宽度为8的操作符,即setw(8)。故应该选择D。第27题:参考答案:D答案解析:本题主要考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。本例的

19、main()函数中,第1条语句定义了一个MyClass对象和一个MyClass类型指针,此时创建了1个对象,因为没有构造参数,故会调用默认构造函数,输出一个A。第2条语句通过new运算符动态创建了1个MyClass对象,此时传入了一个构造参数X,所以会调用相应的构造函数,输出一个X。第3条语句使用delete运算符释放了1个对象,所以会调用1次析构函数,输出一个B。最后,当main()函数结束时,局部变量p1的生存期结束,故还要调用1次析构函数输出一个B。因此,最终输出结果是AXBB,应该选择D。第28题:参考答案:A答案解析:本题主要考查的是常成员函数。const关键字可以用于参与对重载函数

20、的区分。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。当类中只有一个常成员函数时,一般对象也可以调用该常成员函数。由此可见,通过fun1调用value()函数时,是调用前一个,而通过fun2调用value()函数,是调用后一个。另外,value()函数中访问的i是类中定义的数据成员i,全局变量i在类中被“屏蔽”。观察4个选项不难发现,要输出的表达式来来去去只有3个:fun1value()、fun2value()和Fun:i。fun1.value()调用的是前一个value()函数,输出i-1,这里的i是Fun类的成员i,即等于2-1=1。fun2.value()调用的后一个va

21、lue()函数,输出i+1=2+1=3。 Fun:i是通过类名直接访问类的静态数据成员i的值,即2。所以正确的输出顺序应该是:fun1.value(),Fun:i,fun2.value()。故应该选择A。第29题:参考答案:D答案解析:本题主要考查的是静态成员。静态成员的特性是不管这个类创建了多少个对象,它的静态成员都只有一个拷贝(副本),这个副本被所有属于这个类的对象共享。本例中,Obj类定义了一个静态数据成员i,并初始化为0。在主函数中,首先定义了1个该类对象ob1,所以构造函数被执行1次,i被加1。然后调用函数f(),该函数中又定义了一个对象ob2,此时i再次加1变成2,然后通过静态成员

22、函数getVal()输出i的值2。f()函数结束了,局部变量ob2被释放,故析构函数被调用了1次,i变成1。回到主函数中,又动态创建了1个对象并让指针ob3指向它,所以i变成2,接着输出的值为2。最后,释放动态创建的那个对象,i变为1,所以最后输出的值为1。因此,程序最终输出结果为221,应该选择D。第30题:参考答案:C答案解析:本题考查的是派生类对象的构造。建立派生类对象时,构造函数的执行顺序如下: (1) 执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序(自左向右): (2) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序(自上而下): (3) 执行派生类的构

23、造函数。 所以本题在建立派生类Derived的对象d1时会先调用基类Base的构造,由于派生类中没有通过初始化列表显式构造基类对象,所以调用的是基类的默认构造函数,会输出一个A。然后调用自身的构造函数,输出传入的构造参数B。故程序输出的结果是:AB。所以应该选择C。第31题:参考答案:A答案解析:本题考查的是派生类对基类成员的访问。因为类中缺省的访问权限是私有的 (private),所以本题MyBase类中定义的成员k为私有成员。而派生类中的成员只能够访问墓类中的公有成员和保护成员,不能访问基类中的私有成员。所以,派生类中的函数getK()中的return k;语句是非法的。即函数getK()

24、试图访问基类的私有成员变量k,故应该选择A。第32题:参考答案:A答案解析:本题考查的是派生类对象的析构。释放派生类对象时,析构函数的执行顺序如下: (1) 调用派生类自身的析构函数; (2) 调用派生类成员对象的析构函数; (3) 调用基类的析构函数。 所以,本题的四个选项中,只有选项A正确。第33题:参考答案:D答案解析:本题考查的是运算符重载。在C+中,不能作为非成员函数重载的运算符只有=、()、-以及所有的类型转换运算符,因此选项A不正确。运算符重载对于返回值的类型并没有限制,因此选项B也不正确。将运算符重载函数声明为某个类的友元的目的是方便该函数访问类的私有和保护成员,C+并不强制要

25、求非成员重载的运算符一定是某个类的友元,因此选项C也不正确。运算符重载也是一种函数重载,两个重载的函数至少要在参数个数或参数类型上有所不同,否则C+编译器就无法区分它们。因此,题目中重载的+运算符的两个参数都是int类型,而C+已提供了求两个int型数据之和的运算符+,所以编译器无法区分应该调用哪一个,故会报错,所以应该选择D。第34题:参考答案:B答案解析:本题考查的是文件打开模式。文件打开模式ios_base:app是为添加数据而打开(总是在尾部写)。因此选项A、C、D的说法不正确,应该选择B。第35题:参考答案:C答案解析:本题考查的是虚函数的概念。在C+中,一个派生类的对象可以被它的任

26、何一个基类的指针所指向(或被基类类型的引用所引用)。若基类和派生类中存在一模一样的成员函数,那么通过该基类指针(或引用)调用这样的成员函数,究竟是应该调用基类中的还是调用派生类中的呢?答案是:若这个成员函数被定义成虚函数,那么就调用派生类中的;否则会调用基类中的。本题是一个典型的例子,func1()是虚函数,func2()是一般成员函数,而且在派生类与基类中都存在两个这样的函数。在主函数中,语句A*p=new B;定义了一个基类的指针p,并让它指向一个派生类对象。所以通过该指针调用func1()时,运行的是派生类的版本,而通过该指针调用func2()运行的是基类的版本。所以,程序运行后将输出B

27、1A2,应该选择C。二、填空题(每空2分,共30分)第36题:参考答案:3详细解答:题目中的图形是倒置的树状结构,这是用层次图表示的软件结构。结构图中同一层次模块的最大模块个数称为结构的宽度,它表示控制的总分布。根据上述结构图宽度的定义,从图中可以看出,第二层的模块个数最多,即为3。因此,这个系统结构图的宽度为3。第37题:参考答案:或程序调试(阶段)或软件调试(阶段) 或 Debug (阶段)详细解答:软件测试的目的是发现程序中的错误,而调试的目的是确定程序中错误的位置和引起错误的原因,并加以改正。换句话说,调试的目的就是诊断和改正程序中的错误。调试不是测试,但是它总是发生在测试之后。因此,

28、本题的正确答案是调试(阶段)或程序调试(阶段)或软件调试(阶段)或Debug(阶段)。第38题:参考答案:记录 或 元组详细解答:关系是关系数据模型的核心。关系可以用一个表来直观的表示,表的每一列表示关系的一个属性,每一行表示一个元组或记录。因此,本题的正确答案是元组或记录。第39题:参考答案:栈 或 Stack详细解答:栈和队列是两种特殊的线性表,其特殊性在于对它们的操作只能在表的端点进行。栈中的数据按照后进先出的原则进行组织,而队列中的数据是按照先进先出的原则进行组织。因此,本题的正确答案是栈(Stack)。第40题:参考答案:线性结构详细解答:数据结构分为线性结构和非线性结构,其中队列属

29、于线性结构。队列有两种存储结构,一种是顺序存储结构,称为顺序队列;另一种是链式存储结构,称为链队列。题目中所说的带链的队列就是指链队列。无论队列采取哪种存储结构,其本质还是队列,还属于一种线性结构。因此,本题的正确答案是线性结构。第41题:参考答案:int或整型详细解答:本题考查的是指针的声明语句。在一个声明语句中,如果变量名称前面有*号,则就会使该变量成为一个指针变量。而题目中的变量b之前没有*号,所以变量 b就是一般的int型变量,而不是指针变量。故应该填int或整型。第42题:参考答案:i+1详细解答:题目要求“将下标为i的元素移动到下标为i-1的单元,其中1in”,该要求也可以看成是“

30、将下标为(i+1)的元素移动到下标为(i+1)-1的单元,其中1(i+1)n”,即“将下标为i+1的元素移动到下标为i的单元,其中0in-1”。for循环的循环变量i的取值范围正好是0in-1,所以循环体中的语句应该为ai ai+1;。故应该填i+1。第43题:参考答案:15详细解答:第44题:参考答案:A详细解答:本题考查的是类的构造函数。题目中创建了一个含有3个元素的对象数组 f,因为创建对象数组时不能传递构造参数,所以系统会调用3次Foo类的默认构造函数,而该函数什么也没有做。另外还定义了一个对象8,并传入构造参数3,所以系统会调用1次Foo类中带有一个int型参数的那个构造函数,输出一

31、个字符A。所以整个程序输出的结果为A。第45题:参考答案:this-value或Foo:value详细解答:从注释中可以看出,下划线处应该填入Foo类的数据成员value。但是,由于函数的形参名也叫value,所以在函数中直接使用value引用的是形参变量而不是 Foo类的数据成员。此时,只有两个办法可以引用到Foo类的数据成员:一是通过this指针,在类的成员函数中this代表函数所属对象的指针,故可以填this-value。二是通过作用域运算符“:”明确指出访问的是Foo类的成员,故还可以填Foo:value。第46题:参考答案:BD详细解答:根据选择题(35)的解析我们知道,因为本题的p

32、rint()函数不是虚函数,所以通过基类指针pb调用的print()函数,是基类中的版本,而通过派生类指针pd调用的print()函数,是派生类中的版本。因此,程序运行时会先输出一个B字符然后输出一个D字符。故应该填BD。第47题:参考答案:private详细解答:因为Derived类私有继承Base类,所以Base类中的公有和保护成员成为 Derived类的私有成员,Base类的私有成员在Derived类中不可访问。因此,Base类中的保护成员函数fun()在Derived类中的访问权限是private。第48题:参考答案:MyClass&详细解答:本题考查“”运算符的重载。赋值运算符的重载

33、应注意以下几点: 返回值应声明为引用,而函数体中总是用语句return *this;返回; 如果参数被声明为指向同类对象的引用或指针,应判别所指向的对象是否与被赋值对象为同一对象,如果是,立即返回,不做任何赋值处理: 如果被赋值对象占用了动态空间或其他资源,应首先释放这些资源,以便接收新的资源; 如果参数被声明为指针或引用,通常应加上const修饰; 如果参数被声明为指针,应判别是否为空,以便做出特殊处理: 一个类如果需要重载运算符,通常也就需要定义自身特有的拷贝构造函数,反之亦然。 由此可见,本题应填入MyClass&。第49题:参考答案:ji详细解答:本题考查的是插入排序算法。在sort(

34、)函数中是一个两重循环,外循环从1循环递增到n-1,即遍历未排序序列a1an-1,取未排序序列中的第1个元素ai (i初值等于1)与已排序序列中的最后一个元素ai-1开始从后往前进行比较。内循环从后往前遍历已排序序列,使循环变量j的初值为i,则aj-1是已排序序列的最后一个元素。所以应该填ji第50题:参考答案:9SS9S详细解答:本题主要考查虚函数的运用。在主函数中,首先通过基类对象d1调用print()函数,即调用基类的print()函数,输出一个9。然后通过派生类对象d2调用print()函数,即调用派生类的print()函数,输出一个S。接下来通过基类指针p调用print()函数,p此时指向的是派生类对象,而print()函数是虚函数,根据选择题(35)的解析,此时调用的是派生类的print()函数,输出一个S。然后,将基类对象d1传递给 show()函数,show()函数通过基类类型引用形参x调用print()函数,此时调用基类的 print()函数,输出一个9。最后,将派生类对象d2传递给show()函数,此时show()函数中通过基类类型引用x调用派生类对象d2的print()函数,根据虚函数的性质,应该调用的是派生类的print()函数,输出一个S。故最终输出的结果是:9SS9S。更多试卷请见麦多课文库

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

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

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