首页 > 全部 > 二级C++ > 国家二级C++机试(继承和派生)模拟试卷19

国家二级C++机试(继承和派生)模拟试卷19

本单篇文档共8599字,内容预览3600字,预览为有答案版,源文件无水印,下载后包含无答案空白卷版和有答案版,同时也有计算机类NCRE全国计算机二级整科真题模拟题,讲义课件,思维导图,易错高频题等下载。
二级C++ 章节练习 6120人下载
价格: 1.20 原价:¥8.00
收藏

国家二级C++机试(继承和派生)模拟试卷19

选择题

1.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。(C)

A. 派生类、成员对象类、基类

B. 成员对象类、基类、派生类

C. 基类、成员对象类、派生类

D. 基类、派生类、成员对象类

解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(自左向右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而下),最后是执行派生类的构造函数。

2.通过派生类的对象可直接访问其( )。(A)

A. 公有继承基类的公有成员

B. 公有继承基类的私有成员

C. 私有继承基类的公有成员

D. 私有继承基类的私有成员

解析:基类的私有成员在派生类中都是不能访问的,所以选项B、D是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项C也是错误的。基类的公有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。

3.有如下程序:

#include<iostream>

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;

x.n=1;//1

x.setN(2); //2

x.k=3; //3

x.setK(4); //4

return 0;

}

在标注号码的四条语句中正确的是( )。(B)

A. 1

B. 2

C. 3

D. 4

解析:因为类BB公有继承自类AA,所以AA中的保护成员和公有成员在类BB中仍是保护成员和公有成员。在选项B中调用了公有成员函数setN(int n){this->n=n;},对保护成员n进行赋值操作。

4.有如下两个类定义

class xx{

private:

double x1;

protected:

double:x2;

public:

double x3;

};

class YY:protected XX{

private:

double y1;

potected:

double y2;

public:

double y3;

};

在类YY中保护成员变量的个数是( )。(C)

A. 1

B. 2

C. 3

D. 4

解析:在C++中派生类从基类保护继承时,基类的公有成员在派生类中改变为保护成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说,YY类保护继承自类XX,那么类XX中的公有成员x3和保护成员x2在派生类中都成为保护成员,再加上类YY中的保护成员y2,因此在派生类YY中保护成员的个数为3。

5.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。(B)

A. 任何

B. 公有或保护

C. 保护或私有

D. 私有

解析:基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承类中是保护成员。

6.下列关于派生类和基类的描述中,正确的是( )。(B)

A. 派生类成员函数只能访问基类的公有成员

B. 派生类成员函数只能访问基类的公有和保护成员

C. 派生类成员函数可以访问基类的所有成员

D. 派生类对基类的默认继承方式是公有继承

解析:派生类不论是采用那种继承方式继承基类,它的成员函数只能访问基类的公有成员和保护成员。

7.有如下类定义:

class B{

public:void fun1(){}

private:void fun2(){}

protected:void fun3(){}

};

class D:public B{

protected:void fun4(){}

};

若obj是类D的对象,则下列语句中不违反访问控制权限的是( )。(A)

A. pbj.fun1();

B. obj.fun2();

C. obj.fun3();

D. obj.fun4();

解析:派生类D公有继承父类B,所以obj可以访问基类B的公有,不能访问其它成员。

8.有如下程序:

class Base{

public:

int data;

};

class Derivedl:public Base f};

};

class Derived2:protected Base{};

int main(){

Derivedl d1;

Derived2 d2;

d1.data=0; //①

d2.data=0; //②

return 0;

}

下列关于程序编译结果的描述中,正确的是( )。(C)

A. ①②皆无编译错误

B. ①有编泽错误,②无编译错误

C. ①无编译错误,②有编译错误

D. ①②皆有编译错误

解析:保护继承的类Dervied2不能访问基类Base中的公共数据成员data。

9.有如下程序:

#include<iostream>

using namespace std;

class xx{

int x;

public:

XX(int xx=0):x(xx){}

int getX(){return x;}

};

class YY:public xx{

int y;

public:

YY(int xx,int yy):XX(xx),y(yy){}

int getV(){return getX()+y;}

};

本文档预览:3600字符,共8599字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载

剩余未完,查看全文
收藏
国家二级C++机试(继承和派生)模拟试卷19

推荐资源

客服

扫码添加客服微信

热线

官方客服

如遇问题,请联系客服为您解决

电话客服:

客服微信:pujinet

工作时间:9:00-18:00,节假日休息

公众号

扫码关注微信公众号