1、国家二级 C机试(选择题)模拟试卷 109及答案与解析 一、选择题 1 有如下类声明: class XA int x; public: XA(int n)x n; ; class XB: public XA int y; public: XB(int a,intb); ; 在构造函数 XB的下列定义中,正确的是 ( )。 ( A) XB XB(int a, int b): x(a), y(b) ( B) XB XB(int a, int b): XA(a), y(b) ( C) XBXB(int a, int b): x(a), XB(b) ( D) XB XB(int a, int b):
2、XA(a), XB(b) 2 有如下程序: #include using namespace std; class BASE public: BASE()tout using namespace std; class Base public: void fun()coutfun(); ( D) fun(); 19 有如下程序: #inclulde using namespace std; class Base private: void funl() consttout不可见; protected-private; public-protected。 【知识模块】 继承和 派生 18 【正确答
3、案】 B 【试题解析】 此题考查的是继承的使用。分析题目可知,横线处应填入对基类成员函数 fun()的调用语句,此处只能使用作用域运算符 “ ”才能调用到基类的同名函数,故选项 B正确。 【知识模块】 继承和派生 19 【正确答案】 B 【试题解析】 此题考查的是保护继承。因为 Derived以 protected方式继承了Base类,所以父类 Base中的公有成员和保护成员均成了 Derived类的保护成员,而 Base类的私有成员 Derived类不可访问。所以,主函数中通过 Derived类的对象只能够访问到 Derived类的公有成员。 【知识模块】 继承和派生 20 【正确答案】 B
4、 【试题解析】 此题考查的是派生类对基类成员的访问。基类的成员有公有、保护和私有三种访问属性;类的继承方式也有公有继承、保护继承和私有继承三种。无论那种继承方式,派生类中的成员都不能访问基类中的私有成员,但可以访问基类中的公有成员和保护成员。 【知识模块】 继承和派生 21 【正确答案】 A 【试题解析】 此题考查的是派生类对基类成员的访问。因为类中缺省的访问权限是 私有,所以本题中 MyBase类中定义的成员 k是私有成员。派生类中的成员只能访问基类中的公有成员和保护成员,不能访问基类中的私有成员。所以派生类中函数 getK()中的语句 return k;是非法的。 【知识模块】 继承和派生
5、 22 【正确答案】 C 【试题解析】 此题考查的是派生类对基类成员的访问。派生类对基类的各个成员的访问能力与继承方式无关,其成员不能访问基类中的私有成员,可以访问基类的公有成员和保护成员。 【知识模块】 继承和派生 23 【正确答案】 C 【试题解析】 此 题考查的是基类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类
6、的保护成员在派生类中仍然是保护成员。根据以上分析可知,本题中只有从B类继承的 fun2()为公有属性,故选 C选项。 【知识模块】 继承和派生 24 【正确答案】 B 【试题解析】 此题考查的是派生类对基类成员的访问权限。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员:派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员:派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。 【知识模块】 继承和派生 25 【正确答
7、案】 A 【试题解析】 在派生类对基类的三种继承形式中, 都无法对基类的私有成员访问A正确。在 B中,三种继承方式都能访问基类的保护成员,故 B不正确。 C选项的情况在 f()是基类私有成员情况下是对的,但是还有别的可能,并不一定正确。同样 D也不一定正确。 【知识模块】 继承和派生 26 【正确答案】 D 【试题解析】 通过公有继承定义的派生类,其成员函数可以访问基类的公有成员和保护成员,但不能访问基类的私有成员。 【知识模块】 继承和派生 27 【正确答案】 C 【试题解析】 建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函 数,调用的顺序按照基类被继承时候的顺序 (自左向右 )。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序 (自上而下 ),最后是执行派生类的构造函数。 【知识模块】 继承和派生