(19)D【解析】构造函数和析构函数一样,是类的特殊的成员函数。其特殊之处在于,构造函数可以 有多个版本以实现不同的初始化方式,不能指定形参和函数类型,这些都是系统默认完成。
(20)D【解析】派生类和基类之间的关系比较重要,派生类不仅可以定义同名的成员变量,还可以调 用或重载基类的同名函数,这是类的多态性的基础。
(21)B【解析】纯虚函数一般提供派生类进行继承的参考,是多态性的重要保证,一个具有纯虚函数 的类称为抽象类,抽象类可以具有其他类的特点.但不能实例化,其主要目的是作为派生类的基类 存在,处于类层次的高层。
(22)C【解析】构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数~样属于类的特 殊的成员函数。而友元函数则是为了增加类的访问灵活行而允许其他类的成员函数或全局函数访 问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。
(23)A【解析】c++语言中为了简化继承关系,规定多重继承中可访问性规则同单继承规则。
(24)A【解析】本题考察const修饰符的作用。注意:const位置不同,其修饰的部分也是不同的。本 题中const修饰的是ptr所指的对象本身,所以,ptr是可以重新指向新的对象,而pt,一>a则无法 被更新。
(25)A【解析】本题考察引用的定义既使用。引用是C++中新引入的概念,其使用方法同变量,而 其本质同指针,具有指针的灵活性。引用必须用变量进行赋值,不能用常量或常数。
(26)C【解析】可以说类来源于结构体,两者有相似之处。但类的功能更强大一些,不仅增加了操作, 还能够隐藏和包含其成员变量或成员函数。
(27)L:【解析】输出流对象包括基本的输出设备,如显示器,内存和文件,而输入流对象则包括键盘, 文件以及其他输入设备。
(28)C【解析】本题考察cln流对象的几种成员函数get,getline的使用规则。流提取符>>在提取 字符时,遇到C++规定的分隔符如空格,回车和’Fab键时自动分割.故本题正确答案为C。
(29)D【解析】本题考察cin流对象的几种成员函数get,gedine,read及流提取符>>的使用规则。
(30)D【解析】c++中没有规定文件打开时的隐含打开方式,因此考生在写程序是必须指定打开方 式,否则将出现错误。
(31)B【解析】常数据成员不能背更新。因此可以排除选项C和D。常数据成员所包含的值不能被更 新,所以必须被初始化,如果初始化则常数据成员里的随机值是没有实际意义的。
(32)A【解析】类的构造函数的作用就是在类实例化对象时,即对象还没有生成时完成一些初始化 的工作。此时,析构函数和静态成员函数都还没有建立,而友元函数是类外部的函数,根本无法完 成类的实例化工作。
(33)A【解析】如果重载了赋值运算符后,对象之间是可以赋值的,对象如C++中其他内置的数据 类型一样,可以作为函数参数、数组元素,其他对象的成员存在。
(34)C【解析】 同上题。
(35)A【解析】是否是重载函数,需要给编译器提供足够的信息判断。其主要的依据是函数的名字, 参数的类型,函数的返回值类型。
二、填空题
(1)【l】存储结构【解析】数据结构分为逻辑结构与存储结构,循环队列属于存储结构。 因此,本题的正确答案为存储结构。
(2)【2】n(n一1)/2 【解析】在最坏情况下,冒泡排序所需要的比较次数为n(n一1)/2。
(3)【3】420【解析】一般二叉树有一个性质:在任意一棵二叉树中,度为O的结点(即叶子结点)总是 比度为2的结点多一个。 在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。 综合以上两点可以得到如下结论: 没一棵完全二叉树具有n个结点。如果n为偶数,则在该二叉树中有n/2个叶子结点以及n/2—1个度为2的结点.还有1个是度为1的结点;如果n为奇数.则在该二叉树中有[n/2]+1个叶子结点 以及[n/2]个度为2的结点.没有度为l的结点。 在本题中,完全二又树共有839个结点.839是奇数,因此.在该二叉树中有420个叶子结点以及419个度为2的结点.没有度为l的结点。