国家二级C++机试(继承和派生)模拟试卷15
选择题
1.有如下类声明:
c1ass XA{
int x;
public:
XA(int n){x=n;}
};
c1ass XB:public XA{
int y;
public:
XB(int a,:int b);
};
在构造函数XB的下列定义中,正确的是( )。
B
解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化:然后对派生类中的新增成员初始化。格式为:派生类名(构造函数形参表)基类构造函数(形参表)。
2.下列有关继承和派生的叙述中,正确的是( )。(D)
A. 如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员
B. 派生类的成员函数可以访问基类的所有成员
C. 基类对象可以赋值给派生类对象
D. 如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类
解析:此题考查的是继承和派生。无论是哪种继承方式,派生类都能够访问基类的公有和保护成员,而不能访问基类的私有成员,故选项A和B错误;公有继承时,基类的对象不可作为派生类的对象处理,即基类对象不可赋值给派生类对象,所以选项C错误。
3.下列有关类继承的叙述中,错误的是( )。(D)
A. 继承可以实现软件复用
B. 虚基类可以解决由多继承产生的二义性问题
C. 派生类构造函数要负责调用基类的构造函数
D. 派生类没有继承基类的私有成员.
解析:此题考查的是类继承。派生类继承了基类的(全部数据成员,私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问,故选项D错误。
4.在下列关键字中,不能用来表示继承方式的是( )。(B)
A. private
B. static
C. public
D. protected
解析:此题考查的是继承方式。继承方式有私有(private)、保护( protected)、公有(public)三种。
5.在类声明中,紧跟在“public:”后声明的成员的访问权限是( )。(B)
A. 私有
B. 公有
C. 保护
D. 默认
解析:类中提供了3种访问控制的权限:公有,私有和保护。其中公有类型定义了类的外部接口,任何一个外部的访问都必须通过外部接口进行。私有类型的成员只允许本类的成员函数访问,来自类外部的任何访问都是非法的,保护类型介于公有类型和私有类型之间,在继承和派生时可以体现出其特点。
6.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(A)
A. 私有继承
B. 非私有继承
C. 保护继承
D. 公有继承
解析:继承的方式包括三种:公有继承,保护继承和私有继承。如果不显示的给出继承方式,缺省的类继承方式是私有继承private。
7.有如下类定义:
c1ass XX {
int xx,
public:
XX(): xx(0){cout<<’A’;}
XX(int n):xx(n){cout<<’B’;}
};
c1ass YY:public XX{
int yy;
public:
YYO:yy(0){cout<<yy;}
YY(int n): XX(n+1), yy(n){cout<<yy;}
YY(int m, int n):XX(m), yy(n){cout<<yy;}
};
下列选项中,输出结果为AO的语句是( )。(D)
A. YYy1(0,0);
B. YYy2(1);
C. YYy3(0);
D. YYy4;
解析:考查的是类的继承。选项A的执行结果为B0,建立YY的对象y1,首先调用其构造函数,YY继承于XX所以先调用的为XX的构造函数,根据输入的参数可知输出B,然后执行YY的构造函数输出0;同理,选项B的执行结果为Bl,选项C的执行结果为B0。
8.有如下类定义:
c1ass XX{
int xdata;
public:
XX(intn=0):xdata(n){}
};
c1ass YY:public XX{
int ydata;
public:
YY(int m=0, int n=0):XX(m), ydata(n){}
};
YY类的对象包含的数据成员的个数是( )。(B)
A. 1
B. 2
C. 3
D. 4
解析:因为类XX包括一个数据成员xdata,而类YY继承自类XX,所在类YY中也包含数据成员xdata,同时类YY中也定义了其本身的数据成员ydata,因而YY类的对象包含的数据成员的个数是2。
9.下列关于继承方式的描述中,错误的是( )。(D)
A. 如果不显式地指定继承方式,缺省的继承方式是私有(private)
B. 采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员
C. 采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D. 采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
解析:基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。派生类中的成员不可以访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。
10.下列代码段声明了3个类
c1ass Person{};
c1ass Student:public Person{};
c1ass Undergraduate:Student{};
下列关于这些类之间关系的描述中,错误的是( )。(B)
A. 类Person是类Undergraduate的基类
B. 类Undergraduate从类student公有继承
C. 类student是类Person的派生类
D. 类Undergraduate是类Person的派生类
解析: Student类公有继承自Person类,Undergraduate类私有继承自Student类。所以Undergraduate类是从Student类私有继承的。
11.下列关于基类和派生类关系的叙述中,正确的是( )。(D)
A. 每个类最多只能有一个直接基类
B. 派生类中的成员可以访问基类中的任何成员
C. 基类的构造函数必须在派生类的构造函数体中调用
D. 派生类除了继承基类的成员,还可以定义新的成员
解析:继承分为单继承和多继承,一个类只有一个直接基类时,称为单继承:而一个类同时有多个直接基类时,则称为多继承。派生类的数据成
本文档预览:3600字符,共8813字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载