国家二级C++机试(继承和派生)模拟试卷18
选择题
1.有如下类声明:
class XA{
int x;
public:
XA(int n){x=n;}
};
class XB:public XA{
int y;
public:
XB(int a,int b);
};
在构造函数XB的下列定义中,正确的是( )。
B
解析:此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式为:派生类名(构造函数形参表)基类构造函数(形参表)。
2.有如下程序:
#include<iostream>
using namespace std;
class BASE{
public:
~BASE(){cout<<’’BASE’’;}
};
class DERiVED:public BASE{
public:
~DERIVED(){tout<<’’DERiVED’’;}
};
int main(){DERIVED x;return 0;}
执行后的输出结果是( )。(D)
A. BASE
B. DERIVED
C. BASEDERlJVED
D. DERIVEDBASE
解析:此题考查的是派生类的定义和使用。当对象被删除时,派生类的析构函数就被执行。由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。
3.下列有关类继承的叙述中,错误的是( )。(D)
A. 继承可以实现软件复用
B. 虚基类可以解决由多继承产生的二义性问题
C. 派生类构造函数要负责调用基类的构造函数
D. 派生类没有继承基类的私有成员
解析:此题考查的是类继承。派生类继承了基类的(全部数据成员,私有成员),只是基类的私有成员在派生类中是隐藏的,只能在基类内部访问,故选项D错误。
4.在下列关键字中,不能用来表示继承方式的是( )。(B)
A. private
B. static
C. public
D. protected
解析:此题考查的是继承方式。继承方式有私有(private)、保护(protected)、公有(public)三种。
5.定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。(A)
A. 私有继承
B. 非私有继承
C. 保护继承
D. 公有继承
解析:继承的方式包括三种:公有继承,保护继承和私有继承。如果不显示的给出继承方式,缺省的类继承方式是私有继承private。
6.有如下类定义:
class XX{
int xx;
public;
XX():xx(0){cout<<’A’;}
XX(int n):xx(n){cout<<’B’;}
};
class YY:public XX{
int yy;
public;
YY():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;}
};
下列选项中,输出结果为A0的语句是( )。(D)
A. YY y1(0,0);
B. YY y2(1);
C. YY y3(0);
D. YY y4;
解析:考查的是类的继承。选项A的执行结果为B0,建立YY的对象y1,首先调用其构造函数,YY继承于XX所以先调用的为XX的构造函数,根据输入的参数可知输出B,然后执行YY的构造函数输出0;同理,选项B的执行结果为Bl,选项C的执行结果为B0。
7.下列关于继承方式的描述中,错误的是( )。(D)
A. 如果不显式地指定继承方式,缺省的继承方式是私有(private)
B. 采用公有继承方式时,基类中的公有成员在派生类中仍是公有成员
C. 采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员
D. 采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员
解析:基类中的私有成员在派生类中是隐蔽的,只能在基类内部访问。派生类中的成员不可以访问基类中的私有成员,只可以访问基类中的公有成员和保护成员。
8.下列关于基类和派生类关系的叙述中,正确的是( )。(D)
A. 每个类最多只能有一个直接基类
B. 派生类中的成员可以访问基类中的任何成员
C. 基类的构造函数必须在派生类的构造函数体中调用
D. 派生类除了继承基类的成员,还可以定义新的成员
解析:继承分为单继承和多继承,一个类只有一个直接基类时,称为单继承;而一个类同时有多个直接基类时,则称为多继承。派生类的数据成员由所有基类的的数据成员与派生类新增的数据成员共同组成。
9.当派生类继承一个基类时,默认的继承方式为( )。(C)
A. Public
B. protected
C. private
D. 不确定
解析:派生类继承一个基类时,默认的继承方式为private。
10.下列关于派生类的叙述中,错误的是( )。(D)
A. 派生类至少要有一个基类
B. 派生类中包括了从基类继承的成员
C. 一个派生类可以作为另一个派生类的基类
D. 基类成员被派生类继承以后访问权限保持不变
解析:派生类对象对基类成员的访问权限:①对于公有继承,只有基类的公有成员可以被派生类对象访问,其他(保护和私有)成员不能被访问。②对于私有继承和保护继承,基类中所有成员都不能被派生类对象访问。派生类对基类成员的访问权限:①对于公有继承,基类中公有成员和保护成员可以访问,而基类中私有成员不能被访问。②对于私有继承和保护继承,也是基类中的公有成员和保护成员可以被派生类访问,而基类中的私有成员不能被访问。
11.有如下类声明:
class MyBASE
{
int k;
public:
void set(int n){k=n;}
int getoconst{return k;}
};
class MyDERIVED:protected MyBASE
{
protected:
int j;
public:
void set(int m
本文档预览:3600字符,共8091字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载