1、二级 C+-176 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对2.下列线性链表的叙述中,正确的是_。(分数:2.50)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素D.以上三种说法都不对3.下列关于二叉树的叙述中,正确的是_。(分数:2.50)A.叶
2、子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是_。(分数:2.50)A.学生成绩管理系统B.C 语言编译程序C.UNIX 操作系统D.数据库管理系统5.某系统总体结构图如下图所示: (分数:2.50)A.7B.6C.3D.26.程序调试的任务是_。(分数:2.50)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误7.下列关于数据库设计的叙述中,正确的是_。(分数
3、:2.50)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典8.数据库系统的三级模式不包括_。(分数:2.50)A.概念模式B.内模式C.外模式D.数据模式9.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B差C交D并10.下列选项中属于面向对象设计方法主要特征的是_。(分数:2.50)A.继承B.自顶向下C.模块化D.逐步求精11.C+浯言是从早期的 C 语言逐渐发展演变而来。与 C 语言相比,它在求解问题方法上进行的最大改进是_。(分数:2.50)A.面向过程B.面向对象C.安全性D.复用性12.以
4、下选项中,合法的用户标识符是_。(分数:2.50)A.charB._2TestC.D/maxD.dat13.执行下列 3 条语句后,指针 cp 将指向_。 int a, b, *cp= int *ptr=cp; ptr=(分数:2.50)ApBcCbDa14.下列对变量的引用中,错误的是_。(分数:2.50)A.int a; int B.char a; char C.int a; int p=a;D.float a; float 15.下列列字符数组进行初始化的语句中,正确的是_。(分数:2.50)A.char a=“Hello“;B.char a=“H“, “e“, “l“, “l“, “o
5、“;C.char a5=“Hello“;D.char a25=“Hello“, “World“;16.在对函数进行原型声明时,下列语法成分中,不需要的是_。(分数:2.50)A.函数返回类型B.函数参数列表C.函数名D.函数体17.下列关于 this 指针的描述中,正确的是_。(分数:2.50)A.类的成员函数都有 this 指针B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针18.有如下类定义: class AA int a; public: AA(int n=0):a(n) ; Class BB:public AA p
6、ublic: BB(int n)_ ; 其中横线处缺失部分是_。(分数:2.50)A.:a(n)B.:AA(n)C.a(n);D.a=n19.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.50)A.+B.=C.D.+20.下列关于模板的描述中,错误的是_。(分数:2.50)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键词 typename 声明21.要利用 C+流实现输入/输出的各种格式控制中,必须在持续中包含的头文件是_。(分数:2.50)A.fstreamB.
7、istreamC.ostreamD.iomanip22.在下列选项中,不是 C+关键字的是_。(分数:2.50)A.classB.functionC.friendD.virtual23.若有定义语句“int i=2, j=3;”,则表达式 i/j 的结果是_。(分数:2.50)A.0B.0.7C.0.66667D.0.6666666724.下列语句中,与语句“n=(ab?(bc?1:0):0);”的功能等价的是_。(分数:2.50)A.if(a=b) n=0;B.if(ab)|(bc) n=1; else n=0;C.if(ab)if(bc) n=1; else n=0; else n=0;D
8、.if(ab) n=1; else if(b=c) n=1;else if(bc)n=1; else n=0;25.有如下语句序列: int x=100, coutx“-“rendl; 已知其中变量 X 的地址为 0012FF7C,则执行该语句序列的输出结果为_。(分数:2.50)A.100100B.1000012FF7CC.0012FFTC100D.0012FFTC0012FFTC26.已知函数 f 的原型是“void f(int * x, int ”,下列调用语句中,正确的是_。(分数:2.50)A.f(v1, v2);B.f(v1, C.f(D.f(27.要定义一个引用变量 P,使之引用
9、类 MyClass 的一个对象,正确的定义语句是_。 class Sample public: Sample(int x):ref(x) / Private: Sample():ref(0) / Static int val=5; / Const int ref; / ; 上述程序段中,错误的语句是_。(分数:2.50)A.B.C.D.28.有如下两个类定义: class B private:void funl() protected:void fun2() public:void fun3() ; class D:public B protected:void fun4() ; 若 obj
10、是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:2.50)A.obj.fun1();B.obj.fun2();C.obj.fun3();D.obj.fun4();29.有如下类定义: Class MyClass public: _ private: int data; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象obj,则横线处的声明语句应为_。(分数:2.50)A.friend istreamB.friend istreamC.istreamD.istream30.已知主函数中通过如下语句序列实现对函数模板 s
11、wap 的调用_。 int a10, b10; swap(a, b, 10);(分数:2.50)A.templatetypename Tvoid swap(T a, T b, int size);B.templatetypename Tvoid swap(int size, T a, T b);C.templatetypename T1, typename T2void swap(T1 a, T2 b, int size);D.templateclass T1, class T2void swap(T1 a, T2 b, int size);31.若目前 D 盘根目录下并不存在 test.tx
12、t 文件,则下列打开文件方式不会自动创建 test.txt 文件的是_。(分数:2.50)A.ifstream fin; fin.open(“d:/test.txt“, ios_base:in);B.ifstream fio; fio.open(“d:/test.txt“, ios_base:out);C.ofstream fout; fout.open(“d:/test.txt“, ios_base:out);D.ofstream fout; fout.open(“d:/test.txt“, ios_base:app);32.已知类 MyClass 的定义如下: class Base pub
13、lic: void functionl(Base static void function2(Base void function3()coutdata; static void function4()coutdata; private: int data; ; 其中有编译错误的函数是_。(分数:2.50)A.function1B.function2C.function3D.function433.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass() cout“*“; MyClass(MyCla
14、ss MyClass() cout“; ; int main() HyClass a; HyClass b(a); return 0; 运行这个程序的输出结果是_。(分数:2.50)A.*#B.#*C.*#D.#*34.已知类 MyClass 的定义如下: class HyClass public: HyClass(int d)data=d; NyClass() private: int data; ; 下列对 MyClass 类对象数组的定义和初始化语句中,正确的是_。(分数:2.50)A.MyClass arrays2;B.MyClass arrays2=MyClass(5);C.MyCl
15、ass arrays2=MyClass(5), MyClass(6);D.MyClass*arrays2=new MyClass(2);35.有如下程序: class Base public: int data; ; class Derived1:public Base; class Derived2:protected Base; int main() Derived1 d1; Derived2 d2; d1.data=0; / d2.data=0; / return 0; 下列关于程序编译的描述中,正确的是_。(分数:2.50)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编
16、译错误D.皆有编译错误36.有如下程序: #includeiostream using naraespace std; class Base1 public: Base1(int d)coutd; Base1() ; class Base2 public: Base2(int d)coutd; Base2() ; class Derived:public Base1, Base2 public: Derived(int a, int b, int c, int d):Base1(b), Base2(a), b1(d), b2(c) private: int b1; int b2; ; int
17、main() Derived d(1, 2, 3, 4); retuen 0; 运行时的输出结果是_。(分数:2.50)A.1234B.2134C.12D.2137.有如下程序: #includeiostream using namespace std; class Base public: virtual void function1()cout“0“; void function2()cout“1“; ; class Derived:public Base public: void function1()cout“2“; void function2()cout“3“; ; int mai
18、n() Base*p=new Derived(); p-function1(); p-function2(); return 0; 运行时的输出结果是_。(分数:2.50)A.01B.21C.03D.2338.若为 Fraction 类重载前增 1 运算符“+”,应在类体中将其声明为_。(分数:2.50)A.FractionB.FractionC.friend FractionD.friend Fraction39.有如下程序: #includeiostream #includeiomnaip using namespace std; int main() coutsetfill(“*“)se
19、tw(6)123456; return 0; 运行时的输出结果是_。(分数:2.50)A.*123*456B.*123456*C.*123456D.12345640.有如下程序: #includeiostream using namespace std; void function2(int n); void function1(int n) if(n=0)return; function2(n-2); void function2(int n) if(n=0)return; function1(n-1); int main() function1(5); return 0; 运行时的输出结果
20、是_。(分数:2.50)A.function1 运行 1 次,function2 运行 2 次B.function1 运行 2 次,function2 运行 1 次C.function1 运行 2 次,function2 运行 3 次D.function1 运行 2 次,function2 运行 2 次二级 C+-176 答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对 解析:解析 所谓算法
21、是指解题方案的准确而完整的描述。但算法不等于程序,也不等于计算方法。故A 项错误。设计算法时要考虑可行性、确定性、有穷性和拥有足够的情报。B、C 皆错误,故选 D。2.下列线性链表的叙述中,正确的是_。(分数:2.50)A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C.进行插入与删除时,不需要移动表中的元素 D.以上三种说法都不对解析:解析 在链式存储结构中,存储数据结构的存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域来确定的。故 A、B
22、 错误。线性链表在插入与删除过程中不发生数据元素移动的现象,只需改变有关结点的指针即可,故 C 正确。3.下列关于二叉树的叙述中,正确的是_。(分数:2.50)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个 C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍解析:解析 概念理解题。在任意一棵二叉树中,度为 0 的结点(即叶子结点)总比度为 2 的结点多一个,故 B 正确。4.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件),下面属于应用软件的是_。(分数:2.50)A.学生成绩管理系统 B.C 语言编译程序C.
23、UNIX 操作系统D.数据库管理系统解析:解析 应用软件是为解决特定领域的应用而开发的软件。例如,事务处理软件、工程与科学计算软件、实时处理软件、嵌入式软件、人工智能软件等应用性质不同的各种软件。A 止确。5.某系统总体结构图如下图所示: (分数:2.50)A.7B.6C.3 D.2解析:解析 树的最大层次称为树的深度。图中的系统总体结构有 3 层,故深度为 3。6.程序调试的任务是_。(分数:2.50)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误 解析:解析 程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。
24、故选 D。7.下列关于数据库设计的叙述中,正确的是_。(分数:2.50)A.在需求分析阶段建立数据字典 B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典解析:解析 数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。8.数据库系统的三级模式不包括_。(分数:2.50)A.概念模式B.内模式C.外模式D.数据模式 解析:解析 数据库系统的三级模式分别是概念级模式、内部级模式与外部级模式,A、B、C 正确,D 错误。9.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B差 C交D并解析:解析 图中 R 的关系与 S 的
25、关系相差 T,故由关系 R 和 S 得到关系 T 的操作时差。10.下列选项中属于面向对象设计方法主要特征的是_。(分数:2.50)A.继承 B.自顶向下C.模块化D.逐步求精解析:解析 而向对象程序设计方法最重要的特性是继承、多态和封装。11.C+浯言是从早期的 C 语言逐渐发展演变而来。与 C 语言相比,它在求解问题方法上进行的最大改进是_。(分数:2.50)A.面向过程B.面向对象 C.安全性D.复用性解析:解析 C 语言是面向过程的编程语青,C+和 C 的本质区别是 C+引入了基于对象和面向对象编程的范式。12.以下选项中,合法的用户标识符是_。(分数:2.50)A.charB._2T
26、est C.D/maxD.dat解析:解析 标识符是一个以字母或下画线开头的,由字母、数字、下画线组成的字符串;标识符不能与任意一个关键字同名;标识符中的字母区分大小写。选项 A 是关键字,选项 C、D 均含有非下划线的特殊符号。13.执行下列 3 条语句后,指针 cp 将指向_。 int a, b, *cp= int *ptr=cp; ptr=(分数:2.50)ApBcCbDa 解析:解析 只有第一条语句对指针 cp 赋值,使其指向 a。14.下列对变量的引用中,错误的是_。(分数:2.50)A.int a; int B.char a; char C.int a; int p=a; D.fl
27、oat a; float 解析:解析 声明引用时,必须同时对其进行初始化。15.下列列字符数组进行初始化的语句中,正确的是_。(分数:2.50)A.char a=“Hello“; B.char a=“H“, “e“, “l“, “l“, “o“;C.char a5=“Hello“;D.char a25=“Hello“, “World“;解析:解析 选项 A、C、D 中均为字符串,除了组成的字符外,还带有字符串结尾符“/0“,因此,C 和D 由于数组元素不够,均会产生溢出错误。选项 B 中,a 为二维数组,但由于未指定下标,系统无法判断该数组的具体组成结构。16.在对函数进行原型声明时,下列语法
28、成分中,不需要的是_。(分数:2.50)A.函数返回类型B.函数参数列表C.函数名D.函数体 解析:解析 该题考查的内容是函数的声明问题,考生必须注意:函数声明的形式为: 函数返回类型函数名(函数参数列表);17.下列关于 this 指针的描述中,正确的是_。(分数:2.50)A.类的成员函数都有 this 指针 B.类的友元函数都有 this 指针C.任何与类相关的函数都有 this 指针D.类的非静态成员函数都有 this 指针解析:解析 该题考查的内容是 this 指针的用法,考生必须清楚:静态成员函数没有 this 指针。因为类只有一个静态成员函数实例,所以 this 指针没有什么意义
29、。在静态成员函数中使用 this 指针会引起编译错误。18.有如下类定义: class AA int a; public: AA(int n=0):a(n) ; Class BB:public AA public: BB(int n)_ ; 其中横线处缺失部分是_。(分数:2.50)A.:a(n)B.:AA(n) C.a(n);D.a=n解析:解析 该题考查的内容是派生类的构造函数,考生应该掌握: 构造派生类的对象时,必须对基类数据成员、新增成员对象的数据成员和新增的其他数据成员进行初始化。派生类构造函数的一般格式如下: 派生类名:派生类名(总参数表):基类名 1(参数表 1), ; 基类名
30、n(参数表 n), 成员对象名 1(参数表 n+1), 成员对象名 m(参数表 n+m) 派生类构造函数体 19.为类 Matrix 重载下列运算符时,只能作为 Matrix 类成员函数重载的运算符是_。(分数:2.50)A.+B.= C.D.+解析:解析 赋值运算符也必须作为成员函数重载。一般情况下并不需要重载“=”,但若类中包含指向动态空间的指针时,就需要重载赋值运算符。20.下列关于模板的描述中,错误的是_。(分数:2.50)A.类模板的成员函数都是模板函数B.函数模板是一种参数化类型的函数C.满足一定条件时可以省略模板实参D.模板形参只能由关键词 typename 声明 解析:解析 该
31、题考查的内容是类模板以及函数模板,声明一个函数模板的格式是: template模板形参表声明函数声明 其中的模板形参表声明是由一个或多个模板形参组成的,如果是多个需要用逗号隔开。每个模板形参具有下面几种形式: (1)typename参数名; (2)class参数名; (3)类型修饰参数名。 因此 B 项是错误的。21.要利用 C+流实现输入/输出的各种格式控制中,必须在持续中包含的头文件是_。(分数:2.50)A.fstreamB.istreamC.ostreamD.iomanip 解析:解析 该题考查的是预定义流对象,iostream:使用 cin、cout 的预定义流对象进行针对标准设备的
32、 I/O 操作,必须包含此头文件。iomanlp:使用 setw、fixed 等大多数操作符,必须包含此头文件。因此选项 D 是正确的。22.在下列选项中,不是 C+关键字的是_。(分数:2.50)A.classB.function C.friendD.virtual解析:解析 该题考查的内容是关键字,考生应陔注意:标识符不能与关键字同名;标识符中的字母不区分大小写。该题 A、C、D 选项均含有非法标识,因此正确的答案是 D 选项。23.若有定义语句“int i=2, j=3;”,则表达式 i/j 的结果是_。(分数:2.50)A.0 B.0.7C.0.66667D.0.66666667解析:
33、解析 i,j 都是整型 int 数据,因而 i,j 的运算结果也是整型数据,由于取整得到 0,故 A 项是正确的。24.下列语句中,与语句“n=(ab?(bc?1:0):0);”的功能等价的是_。(分数:2.50)A.if(a=b) n=0;B.if(ab)|(bc) n=1; else n=0;C.if(ab)if(bc) n=1; else n=0; else n=0; D.if(ab) n=1; else if(b=c) n=1;else if(bc)n=1; else n=0;解析:解析 该题考查的内容是条件运算是 C+中唯一的三目运算,其使用格式为: 表达式 1?表达式 2:表达式
34、3 运算时,首先计算表达式 1,若其值非 0,则返回表达式 2的值,否则返回表达式 3的值。所以 C 是正确答案。25.有如下语句序列: int x=100, coutx“-“rendl; 已知其中变量 X 的地址为 0012FF7C,则执行该语句序列的输出结果为_。(分数:2.50)A.100100 B.1000012FF7CC.0012FFTC100D.0012FFTC0012FFTC解析:解析 x 为整型数据输出时输出它的值 100,r 的地址存放的是 x 的地址数据,输出 r 时为 x 的值。因此 A 项是正确的。26.已知函数 f 的原型是“void f(int * x, int ”
35、,下列调用语句中,正确的是_。(分数:2.50)A.f(v1, v2);B.f(v1, C.f( D.f(解析:解析 该题考查的是指针和地址,考生应该注意以下几个问题: 一元(单目)运算符 / Const int ref; / ; 上述程序段中,错误的语句是_。(分数:2.50)A.B.C. D.解析:解析 该题考查的是静态数据成员,静态数据成员必须进行初始化,而且它的仞始化与一般的数据成员初始化不同。它的初始化格式为: 数据类型类名:静态数据成员名=值; 因此 C 项是正确的。28.有如下两个类定义: class B private:void funl() protected:void fu
36、n2() public:void fun3() ; class D:public B protected:void fun4() ; 若 obj 是类 D 的对象,则下列语句中不违反访问控制权限的是_。(分数:2.50)A.obj.fun1();B.obj.fun2(); C.obj.fun3();D.obj.fun4();解析:解析 该题考查的内容是派生类对基类成员的访问,考生首先要清楚: (1)公有继承(public)不更改派生类中基类成员的权限; (2)私有继承(private)把派生类中基类成员的权限更改为私有成员(privatc); (3)保护继承(protected)更改派生类中基
37、类成员的权限为保护成员(protected)。 因此正确答案为 B。29.有如下类定义: Class MyClass public: _ private: int data; 若要为 MyClass 类重载流输入运算符,使得程序中可以“cinobj;”形式输入 MyClass 类的对象obj,则横线处的声明语句应为_。(分数:2.50)A.friend istreamB.friend istream C.istreamD.istream解析:解析 在 C+中,C+流输入运算符“”和输出运算符“”只能重载为非类成员函数,一般重载为友元函数。重载 C+流输入运算符“”和输出运算符“”的格式为: f
38、riend istream friend ostream30.已知主函数中通过如下语句序列实现对函数模板 swap 的调用_。 int a10, b10; swap(a, b, 10);(分数:2.50)A.templatetypename Tvoid swap(T a, T b, int size); B.templatetypename Tvoid swap(int size, T a, T b);C.templatetypename T1, typename T2void swap(T1 a, T2 b, int size);D.templateclass T1, class T2voi
39、d swap(T1 a, T2 b, int size);解析:解析 该题考查的内容是声明一个函数模板的格式是: template模板形参表声明函数声明 选项 A 是正确的。31.若目前 D 盘根目录下并不存在 test.txt 文件,则下列打开文件方式不会自动创建 test.txt 文件的是_。(分数:2.50)A.ifstream fin; fin.open(“d:/test.txt“, ios_base:in);B.ifstream fio; fio.open(“d:/test.txt“, ios_base:out); C.ofstream fout; fout.open(“d:/tes
40、t.txt“, ios_base:out);D.ofstream fout; fout.open(“d:/test.txt“, ios_base:app);解析:解析 该题考查的内容是文件流的建立。对于 ifstrcam,默认打开模式是ios_base:in。ifstream 只能用于输入,它没有提供任何用于输出的操作。打开 ifstream 文件流时,采用 ios_base:out、ios_base:app、ios_base:trunc、ios_base:ate 等这些与输出有关的打开模式是毫无意义的。32.已知类 MyClass 的定义如下: class Base public: void
41、 functionl(Base static void function2(Base void function3()coutdata; static void function4()coutdata; private: int data; ; 其中有编译错误的函数是_。(分数:2.50)A.function1B.function2C.function3D.function4 解析:解析 该题考查的内容是静态成员函数的相关知识,静态成员的引用不需要用对象名,静态成员函数也没有 this 指针。在静态成员函数的实现中不能直接引用类中说明的非静态成员,但可以引用类中说明的静态成员和类以外的函数和数
42、据。若静态成员函数中要引用非静态成员时,则可通过对象来引用。所以答案为 D。33.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass() cout“*“; MyClass(MyClass MyClass() cout“; ; int main() HyClass a; HyClass b(a); return 0; 运行这个程序的输出结果是_。(分数:2.50)A.*#B.#*C.*#D.#* 解析:解析 该题考查的内容是构造函数和程序结束时析构函数的调用情况。考生应该清楚当对象被创建时系统会自动
43、调用构造函数,当程序结束对象被释放时,系统要调用析构函数。根据程序的执行顺序定义对象 a 以及对象 b,两次调用构造函数,当程序结束时亦两次调用析构函数。故正确答案是 D。34.已知类 MyClass 的定义如下: class HyClass public: HyClass(int d)data=d; NyClass() private: int data; ; 下列对 MyClass 类对象数组的定义和初始化语句中,正确的是_。(分数:2.50)A.MyClass arrays2;B.MyClass arrays2=MyClass(5);C.MyClass arrays2=MyClass(5
44、), MyClass(6); D.MyClass*arrays2=new MyClass(2);解析:解析 该题考查的内容是类对象数组的构造函数的调用情况。考生应该清楚当对象数组被创建时系统会自动调用构造函数,类的定义中构造函数为有参数的构造函数,所以在初始化时,对象也应含有参数,根据题目要求知,正确答案为 C。35.有如下程序: class Base public: int data; ; class Derived1:public Base; class Derived2:protected Base; int main() Derived1 d1; Derived2 d2; d1.dat
45、a=0; / d2.data=0; / return 0; 下列关于程序编译的描述中,正确的是_。(分数:2.50)A.皆无编译错误B.有编译错误,无编译错误C.无编译错误,有编译错误 D.皆有编译错误解析:解析 该题考查的内容是派生类的继承,考生应该掌握:只有公有成员才能被用户程序直接访问;私有成员定义了类的内部使用的数据和函数,私有成员只能被自己所属类的成员函数及友元函数访问;保护成员访问权限介于公有成员和私有成员之间,它在类的继承和派生中使用。36.有如下程序: #includeiostream using naraespace std; class Base1 public: Base
46、1(int d)coutd; Base1() ; class Base2 public: Base2(int d)coutd; Base2() ; class Derived:public Base1, Base2 public: Derived(int a, int b, int c, int d):Base1(b), Base2(a), b1(d), b2(c) private: int b1; int b2; ; int main() Derived d(1, 2, 3, 4); retuen 0; 运行时的输出结果是_。(分数:2.50)A.1234B.2134C.12D.21 解析:解析 该题考查的内容是派生类的构造函数。派生类对基类成员访问权限。考生应该注意成员初始化列表中基类名和成
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1