d2.data=0;//② retum 0;
}
下列关于程序编译结果的描述中,正确的是( )。
A.①②皆无编译错误
B.①有编译错误,②无编译错误
C.①无编译错误,②有编译错误
D.①②皆有编译错误
参考答案:C
参考解析:本题考查公用继承和保护继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在 派生类中保持原有访问属性,其私有成员仍为基类私有、稿.受保护继承中,基类的公用成员和保护成员在派生类中成了保护成员,其私有成员仍为基类私有。本题中Derived1公用继承Base.所以①编译正确,Derived2保护继承Base,所以②编译不 正确。
35下列关于基类和派生类关系的叙述中,正确的是( )。
A.每个类最多只能有一个直接基类
B.派生类中的成员可以访问基类中的任何成员
C.基类的构造函数必须在派生类的构造函数体中调用
D.派生类除了继承基类的成员,还可以定义新的成员
参考答案:D
参考解析:本题考查派生类与基类的关系,派生类可以有多个直接基类,而派生类有三种继承方式,在私有继承中,派生类的成员并不能访问基类的成员。如果基类中定义了缺省构造函数或根本没有定义任何一一个构造函数时,在派生类构造函数的定义中可以省对基类构造函数的调用。所以本题答案为D。
36结构化程序所要求的基本结构不包括( )。
A.顺序结构B.GOT0跳转C.选择(分支)结构D.重复(循环)结构
参考答案:B
参考解析:1966年Boehm和Jacopini证明了程序没计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。
37将E—R图转换为关系模式时,实体和联系都可以表示为( )。
A.属性B.键C.关系D.域
参考答案:C
参考解析:从E—R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E—R图中属性也可以转换成关系的属性。
38下面是一个模板声明的开始部分:
templatedouble…由此可知( )。
A.这可能是一个函数模板的声明
B.这可能是一个类模板的声明
C.这既可能是一个函数模板的声明,也可能是一个类模板的声明
D.这肯定是一个错误的模板声明
参考答案:A
参考解析:本题考查函数模板和类模板的基础知识,从templatedouble这里就可以看出这是·个函数模板的声明。
39有如下程序:
#include
using namespace std;
class AA{
int k;
protected:
int n;
void setK(int k){this一>k=k;}
public:
void setN(int n){this一>n=n;}
};
class BB:public AA{/*类体略*" >
;
int main()
}
BB X;
A n=1;//1
B setN(2);//2
C k=3;//3
D setK(4);//4
return 0;
}
在标注号码的四条语句中正确的是( )。
A.1B.2C.3D.4
参考答案:B
参考解析:本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有访问属性,其私有成员仍为基类私有。所以本题中n、k和setK变为了派生类的保护成员,不能直接使用,即1、3、4错误,所以B选项正确。
40有如下头文件:
int fl();
static int f2();
class MA{
public:
int f3();
static int f4();
};
在所描述的函数中,具有隐含的this指针的是( )。
A.flB.f2C.f3D.f4
参考答案:C
参考解析:只有类的非静态成员函数才隐含this指针。其作用域是类内部,当类的非静态成员函数中访问类的非静态成员时,编译器会自动将对象本身的地址作为一个隐含参数传递给函数,而不必一定写上this。所以本题答案为C。
二、基本操作题
41请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl,该工程中包含程序文件main.epp,其中有类 Door(“门”)和主函数main的定义。程序中位于每个“//ERROR****found ****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
打开503号门…门是锁着的,打不开。
打开503号门的锁…锁开了。
打开503号门…门打开了。
打开503号门…门是开着的,无须再开门。
锁上503号门…先关门...门锁上了。
注意:只修改每个“//ERROR***********found **********”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
class Door{
int Bum;//门号
bool closed;//true表示门关着
bool locked://true表示门锁着
public:
Door(int nHm){
//ERROR***********found***********
nun=this一>ann:
closed=locked=true:
}
bool isClosed()const{rehlrn closed;}
//门关着时返回true,否则返回false
bool isOpened()const{return!closed;}
//门开着时返回true,否则返回false
b001 isLocked()const{retum locked;}
//门锁着时返回true,否则返回false