21 [单选题] 某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)( )。
A.3
B.4
C.6
D.7
参考答案:D
参考解析:
根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总比度为2的结点多一个,所以本题中度为2的结点为1-1=0个,所以可以知道本题目中的二叉树的每一个结点都有一个分支,所以共7个结点共7层,即度为7。
22 [单选题] 如下函数模板:
templateT square(T x){return x*x;}
其中T是( )。
A.函数形参
B.函数实参
C.模板形参
D.模板实参
参考答案:C
参考解析:
本题考查模板函数的基本概念,根据模板函数的定义,T是模板形参,所以答案为C。
23 [单选题] 下列运算符中,可以重载为非成员函数的是( )。
A.=
B.>>.
C.[]
D.( )
参考答案:B
参考解析:
赋值操作符=、下标操作符[]和箭头操作符->必须定义为类成员函数,而输入输出操作符可以定义为非成员函数。故本题答案为B选项。
24 [单选题] 有如下程序:
运行后的输出结果是( )。
A.5:4 20.52
B.5:4 20:52
C.5,4 20,52
D.5,4 20:52
参考答案:A
参考解析:
c++中,eonst对象只能使用eonst成员函数,非eonst对象可以使用任一成员;题意中两个print()函数属于基于cons|的重载函数,所以对于非eonst对象a,调用非eonst的成员函数print(),输出:5:4;对于cons|对象b,输出:20,52。故本题答案为A选项。
25 [单选题] 下列有关指针的操作中,正确的是( )。
A.int a=10;void*ptr=&a;cout<<*(ptr);
B.int * ptr=new int[10];delete ptr;
C.i.t Array[4];*(Array+3)=10;
D.int*ptr=new int*[10];
参考答案:C
参考解析:
变量a是整型,所以地址为整型指针,不能赋给void*类型,选项A错误;使用new分配数组空间时,必须使用delete[]来释放数组空间,选项B错误;new int$[10]是分配了l0个整型指针数组,数组的每个元素都是整型指针,它无法赋给整型指针变量ptr,选项D错误。本题答案为C选项。
26 [单选题] 有如下程序:
执行这个程序的输出结果是( )。
A.CCCC
B.CCC
C.CC
D.C
参考答案:B
参考解析:
本题考查类的析构函数,题目中定义了类的一个对象a,对象指针*b,对象数组d[2],当程序执行完后,析构函数执行了3次,输出“CCC”,对象指针不会执行析构函数。所以本题答案为B。
27 [单选题] 下列符号中能够作为C++标识符的是( )。
A.const
B.2a
C._shape
D.-count
参考答案:C
参考解析:
本题考查C++标识符的命名规则,其规则有如下几点:①所有标识符必须由字母、数字或下画线组成,且必须由字母或下画线开头;②所有标识符不能使用C++已有的关键字;③大、小写字母表示不同意义,即代表不同的标识符。选项A是关键字,选项B不能以数字开头,选项D包含了字符”-”,且不能以此字符开头。故答案为C。
28 [单选题] 下列关于运算符函数的描述中,错误的是( )。
A.运算符函数的名称总是以operator为前缀
B.运算符函数的参数可以是对象
C.运算符函数只能定义为类的成员函数
D.在表达式中使用重载的运算符相当于调用运算符重载函数
参考答案:C
参考解析:
运算符函数可以定义为类的友元函数。所以C选项错误。
29 [单选题] 如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是( )。
A.public和public
B.public和protected
C.protected和public
D.protected和protected
参考答案:D
参考解析:
本题考查保护继承中派生类对基类的访问属性,在受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有,所以本题答案为D。
30 [单选题] 当一个派生类私有继承一个基类时,基类中的所有公有成员和保护成员成为派生类的( )。
A.公有成员
B.私有成员
C.保护成员
D.友元
参考答案:B
参考解析:
C++中,对于公有继承,基类成员保持自己的访问级别:基类的public成员为派生类的public成员,基类的protected成员为派生类的proteeted成员,基类的private成员对派生类不可见,所以:在公有继承中,基类中的公有成员对派生类对象可见,基类中的私有成员对派生类对象不可见;对于私有继承,基类的public和protected成员在派生类中为private成员,基类的private成员对派生类不可见,选项B正确。本题答案为B选项。