1、二级 C+笔试 10及答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.下列关于继承的描述中,错误的是( )。(分数:2.00)A.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生保持不变2.有以下程序: #include iostream using namespace std; class Base public: Base() virtual void f1() cout“f1 of base“end1; Base() ; class Deri
2、ve: public Base public: void fl(int x) cout“f1 of derive“end1; ; int main ( ) Base *p; Derive obj1; p= p-f1 ( ); return 0; (分数:2.00)A.编译时出错B.f1 of deriveC.f1 of baseD.以上答案都不对3.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送( )。(分数:2.00)A.调用语句B.命令C.口令D.消息4.堆栈 s进行下列操作:push(1);push(2);pop();pop();后,此时的栈顶元素为( )。(分数:2.0
3、0)A.1B.2C.0D.不确定5.有以下程序: #includeiostream using namespace std; int main () int a=1,2,3, 4,5, 6, 7,8,9, 10, 11, 12; int *p=a+5, *q=0; *q=* (p+5); cout*p“ “*qend1; return 0; (分数:2.00)A.运行后报错B.66C.6 12D.5 56.以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句组的选项是 ( )。(分数:2.00)A.ofstream cfile; cfilopen( “d : ofiltxt“ );B.of
4、stream * cfile = new ofstream; cfile - open( “d : ofiltxt );C.ofstream cfile( “d: ofiltxt“ );D.ofstream * cfile = new( “d : ofiltxt“ )7.有如下程序: class Base1 public: int a; void b() return; void c(float) a=float; ; class Base2 public: void b() void c() private: int a; ; class Derived:public Basel,publi
5、c Base2 public: void b() ; void main() Derived obj; obj.a=1; / obj.b(); / obj.c(10); / 下面各项对语句的描述中,正确的是( )。(分数:2.00)A.语句都有二义性B.语句有二义性,没有二义性C.语句有二义性,没有二义性D.语句有二义性,没有二义性8.对于 switch(C) 中的变量 c不能定义为的类型是( )。(分数:2.00)A.unsignedB.intC.charD.float9.若 x、a、b 和 c均是 int型变量,则执行表达式“x=(a=1,b=2)”后的结果是( )。(分数:2.00)A.
6、1B.2C.3D.x无确定值10.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A.插入排序B.选择排序C.快速排序D.堆排序11.下列关于 swith语句的描述中,正确的是( )。(分数:2.00)A.switch语句中 default字句可以没有,也可有一个B.switch语句中每个语句序列中必须有 break语句C.switch语句中 default字句只能放在最后D.switch语句中 case子句后面的表达式可以是整型表达式12.以下特点中不属于线性表的顺序存储结构的是( )。(分数:2.00)A.线性表中所有元素所占的存储空间是连续的B.线性表的
7、数据元素在存储空间中是按逻辑顺序依次存放的C.线性表中所有元素所占的存储空间是连续的D.前后件两个元素在存储空间是紧邻的13.有以下程序: #include iostream using namespace std; class sample private: int n; public: sample() sample (int m) n=m; sample add(sample s1,sample s2) this-n=s1.n+s2.n; return (*this); void disp() cout“n=“nend1; ; int main () sample s1(10) ,s2(
8、5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.n=10B.n=5C.n=20D.n=1514.定义如下一维数组: inta5,*p=a; 则下面描述中,错误的是( )。(分数:2.00)A.表达式 p=p+1是合法的B.表达式 a=a+1是合法的C.表达式 p-a是合法的D.表达式 a+2是合法的15.有如下函数模板的定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对func()的调用中,不正确的是( )。(分数:2.00)A.func(3,
9、5);B.func(3,5);C.func(3,5.5);D.funcint(3,5.5);16.若有以下程序: #include iostream using namespace std; class A private: int a; public: void seta(int x) a=x; void showa,( ) couta“, “; ; class B private: int b; public: void setb(int x) b=x; void showb () coutb“, “; ; class C : public A, private B private: in
10、t c; public: void setc(int x,int y, int z) c=z; sera (x); seth (y); void showc() showa(); showb(); coutcend1; ; int main () C c; c.setc(1,2,3); c.showc(); return 0; 程序执行后的输出结果是( )。(分数:2.00)A.1,2,3B.1,1,1C.2,2,2D.3,3,317.一个向量第 1个元素的存储地址是 100,每个元素的长度为 2,则第 5个元素的地址是( )。(分数:2.00)A.110B.108C.100D.12018.以
11、下各项排序技术中属于交换类排序法的是( )。(分数:2.00)A.冒泡排序B.希尔排序C.堆排序D.简单选择排序19.数据流图用于描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名称标识的图符不属于数据流图合法图符的是( )。(分数:2.00)A.控制流B.加工C.贮存文件D.源和潭20.应在下列程序画线处填入的正确语句是 ( )。 #include iostream using namespace std; clas Base public: void fun() cout“Base:fun“end1; ; class Derived : public Base void fu
12、n() _/显示调用基类的函数 fun() cout“Derived:fun“end1; ;(分数:2.00)A.fun();B.Basfun();C.Base:fun();D.Base-fun();21.程序流程图中的箭头代表的是( )。(分数:2.00)A.数据流B.控制流C.调用关系D.组成关系22.下面内容不属于使用软件开发工具好处的是( )。(分数:2.00)A.减少编程工作量B.保证软件开发的质量和进度C.节约软件开发人员的时间和精力D.使软件开发人员将时间和精力花费在程序的编制和调试上23.下列关于常数据成员的描述中,错误的是( )。(分数:2.00)A.常数据成员必须进行初始化
13、,并且不能更新B.使用 const说明的数据成员称为常数据成员C.可以在类体外面定义常数据成员D.常数据成员的初始化只能通过构造函数的成员初始化列表进行24.一个 C+程序的执行总是从( )。(分数:2.00)A.本程序的第 1个函数开始,到本程序文件的最后一个函数结束B.本程序的第 1个函数开始,到本程序的 main()函数结束C.本程序的 main()函数开始,到 main()函数结束D.本程序的 main()函数开始,到本程序的最后一个函数结束25.若有以下程序段; #includeiostream using namespace std; int main() int a=1,4,5;
14、int *p= class point private: int x, y; public: point ( ) x=0; y=0; void setpoint(int x1,int y1) x=x1; y=y1; void dispoint () cout“x=“x“ , “y=“yend1; ; int main ( ) point *p=new point; p-setpoint (5, 12); p-dispoint (); return 0; 程序运行后的输出结果是( )。(分数:2.00)A.x=12,y=12B.x=5,y=5C.x=12,y=5D.x=5,y=1227.下列关于
15、纯虚函数的描述中,正确的是( )。(分数:2.00)A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数B.纯虚函数的声明总是以“=0;”结束C.派生类必须实现基类的纯虚函数D.含有纯虚函数的类不能是派生类28.在下面的类定义中,错误的语句是( )。 class Sample public: Sample(int val); / Sample(): / private: int a=2.5; / Sample(); / ;(分数:2.00)A.B.C.D.29.有以下程序: #include iostream #include string using namespace std; int
16、 main ( ) char b18 = “abcdefg“; char b28,*pb=b1+3; while (-pb=b1) strcpy (b2, Pb) ; coutstrlen (b2) end1; return 0; 程序运行后的输出结果是( )。(分数:2.00)A.8B.3C.1D.730.关系数据库的数据及更新操作必须遵循的完整性规则是( )。(分数:2.00)A.实体完整性和参照完整性B.参照完整性和用户定义的完整性C.实体完整性和用户定义的完整性D.实体完整性、参照完整性和用户定义的完整性二、B填空题/B(总题数:14,分数:28.00)31.算法的复杂度包括时间复杂度
17、和U 【1】 /U。(分数:2.00)填空项 1:_32.若按层次顺序将一棵有 n个节点的完全二叉树的所有节点从 1到 n编号,那么当 i为偶数且小于 n时,节点 i的右兄弟是节点U 【2】 /U,否则节点 i没有右兄弟。(分数:2.00)填空项 1:_33.面向对象程序设计支持的 3大特性为:封装性、继承性和U 【3】 /U。(分数:2.00)填空项 1:_34.关系代数运算是以集合运算为基础的运算,它的基本操作是U 【4】 /U、并、差。(分数:2.00)填空项 1:_35.软件测试是为了U 【5】 /U而执行程序的过程。(分数:2.00)填空项 1:_36.以下程序的输出结果是U 【6】
18、 /U。 #include iostream using namespace std; int main() int s,i; for(s=0,i=1;i3;i+) s+=i; coutsend1; return 0; (分数:2.00)填空项 1:_37.有如下程序: #include iostream using namespace std; int strle(char a,char b) int num=O,n=O; while (* (a+num) !=/0) num+; while (b n ) * (a+num)=b n; num+; n+; return(num); int m
19、ain () char strl80,str280,*p1=str1,*p2=str2; cinp1; cinp2; coutstrle(p1,p2)end1; return 0; 运行上述程序,如果从键盘输入字符串 qwerty和字符串abcd,则程序的输出结果是U 【7】 /U。(分数:2.00)填空项 1:_38.下面程序的输出结果是U 【8】 /U。 #include iostream using namespace std; int x; void funA(int void funB(int,int int main ( ) int first; int second=5; x=6
20、; funA(first,second) ; funB(first,second) ; coutfirst“ “second“ “xend1; return 0; void funA(int first=a+b; a=2*b; b=first+4; void funB(int u, int second=x; v=second+4; x=u+v; (分数:2.00)填空项 1:_39.在类中定义和实现的函数可以称为U 【9】 /U。(分数:2.00)填空项 1:_40.在 C+中,打开一个文件,就是将这个文件与一个U 【10】 /U建立关联,关闭一个文件,就是取消这种关联。(分数:2.00)填
21、空项 1:_41.下面是“二维向量”vector2D 的定义,其中作为成员函数重载的运算符“+”的功能是将两向量的分量 x和 y对应相加,然后返回作为相加结果的新对象。请填空补充完整。 class vector2D double x; x 分量 double y; y 分量 public: vector2D(double x0=0,double y0=0) :x(x0),y(y0) void show(cout (,y) ; vector2D operator + (vector2D) ; ; U【11】 /Uoperator + (vector2D a) return vector2D(U
22、【12】 /U); (分数:2.00)填空项 1:_42.若有以下程序: #include iostream using namespace std; class sample int x; public: sample() void setx(int i) x=i; friend iht fun(sample B,int n) int m=0; forint i=0;in;i+) if(Bi.xm) m=Bi.x; return.m; ; int main ( ) sample A10; int arr=90,87,42,78,97,84,60,55,78,65; for(int i=O;i
23、10;i+) Ai.setx(arri); coutfun(A, 10)end1; return 0; 该程序运行后的输出结果是U 【13】 /U。(分数:2.00)填空项 1:_43.有以下程序: #include iostream.h class A int a; public: A( int i ) a = i; void display() couta; ; class B int b; public: B (int j ) b = j; void display() coutb; ; class C : public B, public A int c; public: C(int
24、k) : A( k-2), B(k + 2) c= k; void display() A : display(); B : display(); coutc; ; int main ( ) C obj ( 10 ); obj.display(); return 0; 执行后的输出结果为U 【14】 /U。(分数:2.00)填空项 1:_44.下面程序的预设功能是:将文本文件 readme 中的内容读出,显示在屏幕上。 #include fstream using namespace std; int main () char buf 80 ; ifstream file( “readme“)
25、; while (_) file.getline( buf, 80 ); coutbufend1; me. close(); 则程序中空白处应填入的语句为U 【15】 /U。(分数:2.00)填空项 1:_二级 C+笔试 10答案解析(总分:88.00,做题时间:90 分钟)一、B选择题/B(总题数:30,分数:60.00)1.下列关于继承的描述中,错误的是( )。(分数:2.00)A.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生保持不变 解析:解析 在 C+的继承中,基类的构造函数和析构函数不能被
26、继承。所以选项 A是正确的。 派生类中包含了基类中的成员,它是对基类定义的扩充和延续,是对基类定义的进一步具体化,也可以说派生类是基类的组合。所以选项 B是正确的。 派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员。 所以选项 C是正确的。 派生类继承了基类的全部数据成员和除了构造函数、析构函数之外的全部函数成员,但是,继承方式控制了基类中具有不同访问属性的成员在派生类中的访问属性。派生类不能访问基类的私有成员,而对基类的公有成员和保护成员的访问权限则随着派生类对基类的继承方式而改变。所以选项 D的说法是错误的。2.有以下程序: #include iostream us
27、ing namespace std; class Base public: Base() virtual void f1() cout“f1 of base“end1; Base() ; class Derive: public Base public: void fl(int x) cout“f1 of derive“end1; ; int main ( ) Base *p; Derive obj1; p= p-f1 ( ); return 0; (分数:2.00)A.编译时出错B.f1 of derive C.f1 of baseD.以上答案都不对解析:解析 本程序中,将基类的成员函数 n
28、()定义为虚函数,而函数 f1()在派生类中被重新定义,重定义的函数仍然是一个虚函数。在 C+中,一个基类指针(或引用)可以指向它的派生类对象,而且通过这样的指针或引用调用虚函数时,被调用的是该指针(或引用)实际所指向的对象类的那个重定义版本。3.在面向对象方法中,一个对象请求另一对象为其服务的方式是通过发送( )。(分数:2.00)A.调用语句B.命令C.口令D.消息 解析:解析 面向对象是通过对象与对象间彼此的相互合作来推动的,对象间的相互合作需要传递消息,消息的使用类似于函数调用,接受消息的实例执行消息中指定的操作。4.堆栈 s进行下列操作:push(1);push(2);pop();p
29、op();后,此时的栈顶元素为( )。(分数:2.00)A.1B.2C.0D.不确定 解析:解析 对栈 s进行两次 push操作后,又进行了两次 pop操作,即刚才压入的数已经弹出,此时的栈顶元素为不确定。5.有以下程序: #includeiostream using namespace std; int main () int a=1,2,3, 4,5, 6, 7,8,9, 10, 11, 12; int *p=a+5, *q=0; *q=* (p+5); cout*p“ “*qend1; return 0; (分数:2.00)A.运行后报错 B.66C.6 12D.5 5解析:解析 本题考
30、核指针的加减运算。程序首先定义并初始化数组 a,并让定义指针 p 指向数组 a的第 6个元素,即 a5。程序还初始化指针 q为空,即没有指向对象。那么语句“*q=*(p+5);”,就是错误的,因为指针 q为空。给指针 q正确的赋值语句应为:“q=p+5;”。6.以下不能正确创建输出文件对象并使其与磁盘文件相关联的语句组的选项是 ( )。(分数:2.00)A.ofstream cfile; cfilopen( “d : ofiltxt“ );B.ofstream * cfile = new ofstream; cfile - open( “d : ofiltxt );C.ofstream cfi
31、le( “d: ofiltxt“ );D.ofstream * cfile = new( “d : ofiltxt“ ) 解析:解析 本题主要考察 C+中流的概念和文件的 I/O操作。C+把数据的流动抽象为流,而文件流不是标准设备,因此没有 cout那样预先定义的全局对象。文件流定义的操作应用于外部设备,最典型的设备是磁盘中的文件。要定义一个文件流类对象,必须先对文件进行打开操作。常用的文件打开操作方式有3种: 默认构造函数+open 成员函数(对象型); 默认构造函数+open 成员函数(指针型): 构造函数+指定文件名和模式。 题目选项中,选项 A采用方式创建文件对象,选项 B采用方式创建
32、文件对象,选项 C采用方式创建文件对象,上述 3个选项语句都正确的建立起输出文件对象与磁盘文件的关联。选项 D语句中,直接利用 new操作符打开文件,而跳过了流对象的 open操作,语句不合法。7.有如下程序: class Base1 public: int a; void b() return; void c(float) a=float; ; class Base2 public: void b() void c() private: int a; ; class Derived:public Basel,public Base2 public: void b() ; void main(
33、) Derived obj; obj.a=1; / obj.b(); / obj.c(10); / 下面各项对语句的描述中,正确的是( )。(分数:2.00)A.语句都有二义性B.语句有二义性,没有二义性 C.语句有二义性,没有二义性D.语句有二义性,没有二义性解析:解析 C+中二义性问题的检查在访问控制权限或类型检查之前进行,即访问权限的不同或类型不同不能解决二义性问题。所以语句有二义性。由于 Derived中又重新定义了同名成员函数 b(),所以b()函数的调用就不存在二义性问题。8.对于 switch(C) 中的变量 c不能定义为的类型是( )。(分数:2.00)A.unsignedB.
34、intC.charD.float 解析:解析 选择语句 switch(c)中的 c必须属于整型、字符型或枚举型。所以答案为 D。9.若 x、a、b 和 c均是 int型变量,则执行表达式“x=(a=1,b=2)”后的结果是( )。(分数:2.00)A.1B.2 C.3D.x无确定值解析:解析 本题主要考查逗号运算符的运算规则。逗号运算符用于将多个表达式串在一起,逗号运算符的左边总是不返回的,这就是说,逗号右边表达式的值才是整个表达式的值。逗号运算符的结合性为从左到右。由此就可以把表达式理解为 x=b=2。10.在待排序的元素序列基本有序的前提下,效率最高的排序方法是( )。(分数:2.00)A
35、.插入排序 B.选择排序C.快速排序D.堆排序解析:解析 插入排序通过数据元素的交换来逐步消除线性表中的逆序,所以关键词比较的次数与记录的初始排列次序有关,在待排序的元素序列基本有序的前提下,效率最高。而选择排序和堆排序的关键词比较的次数与记录的初始排列次序无关。快速排序虽然与记录的初始排列次序有关,但在待排序的元素序列基本有序的前提下,效率低于插入排序。11.下列关于 swith语句的描述中,正确的是( )。(分数:2.00)A.switch语句中 default字句可以没有,也可有一个 B.switch语句中每个语句序列中必须有 break语句C.switch语句中 default字句只能
36、放在最后D.switch语句中 case子句后面的表达式可以是整型表达式解析:解析 使用 switch语句应该注意的问题:它的实现留给该基类的派生类去做。但是,可以在将一个函数声明为纯虚函数的同时,为该函数提供实现版本。换句话说,一个函数是否为纯虚函数,取决于其原形的尾部是否有“=0;”,与函数体的有无无关。拥有实现版本的纯虚函数仍然有赖于派生类提供的重定义版本。另外,纯虚函数不能声明为内联函数。12.以下特点中不属于线性表的顺序存储结构的是( )。(分数:2.00)A.线性表中所有元素所占的存储空间是连续的B.线性表的数据元素在存储空间中是按逻辑顺序依次存放的C.线性表中所有元素所占的存储空
37、间是连续的 D.前后件两个元素在存储空间是紧邻的解析:解析 线性表的顺序存储结构要求:线性表中所有元素所占的存储空间是连续的并且线性表的数据元素在存储空间中是按逻辑顷序依次存放的。因此,选项 A、B 是正确的。在线性表的顺序存储结构中,前后件两个元素在存储空间中是紧邻的,因此,选项 D也是正确的。13.有以下程序: #include iostream using namespace std; class sample private: int n; public: sample() sample (int m) n=m; sample add(sample s1,sample s2) this
38、-n=s1.n+s2.n; return (*this); void disp() cout“n=“nend1; ; int main () sample s1(10) ,s2(5),s3; s3.add(s1,s2); s3.disp(); return 0; 程序运行后,输出的结果是( )。(分数:2.00)A.n=10B.n=5C.n=20D.n=15 解析:解析 本题考核 this指针的应用。本程序中,sample 类的 add成员函数中使用了 this指针,this指针指向当前对象自身,该成员函数中的语句“this-n=s1.n+s2.n;”用于修改当前对象的数据成员 n的值,语句“
39、return(*this);”用于返回当前对象自身,即对当前对象进行了修改。 对于主函数调用 add()成员函数语句“s3.add(s1,s2);”。此时,this 指针指向的是对象 s3,执行该语句前,s3的数据成员 n未赋值,执行完该语句后,就修改了 s3的私有成员 n的值,使其为 15。14.定义如下一维数组: inta5,*p=a; 则下面描述中,错误的是( )。(分数:2.00)A.表达式 p=p+1是合法的B.表达式 a=a+1是合法的 C.表达式 p-a是合法的D.表达式 a+2是合法的解析:解析 本题考核指针与数组的关系。 对于选项 A,由于在定义时指针 p指向数组 a0,那么
40、表达式“p=p+1”就是让指针 p指向数组中的元素 a1,所以是合法的。 对于选项 C,数组名 a代表该数组的首地址,指针 p中存的也是地址,所以它们之间可以进行加减运算。 对于选项 D,数组名 a代表该数组的首地址,那么表达式“a+2”代表的是数组元素 a2的地址。 对于选项 B,由于数组名代表该数组的首地址,并且只能引用该地址而不能进行修改,所以是不合法的。15.有如下函数模板的定义: templateclass T T func(T x,T y)return x*x+y*y; 在下列对func()的调用中,不正确的是( )。(分数:2.00)A.func(3,5);B.func(3,5)
41、;C.func(3,5.5); D.funcint(3,5.5);解析:解析 对于选项 C,编译系统从 3获得的信息是“T 对应于 int”,从 5.5处获得的信息是“T 对应于 double”,二者相互矛盾,在编译时会产生错误。对于选项 D中紧跟在函数名后的int就是模板实参表,通过它通知编译系统在调用过程中,double 型的参数 5.5将被自动换成血型。16.若有以下程序: #include iostream using namespace std; class A private: int a; public: void seta(int x) a=x; void showa,( )
42、couta“, “; ; class B private: int b; public: void setb(int x) b=x; void showb () coutb“, “; ; class C : public A, private B private: int c; public: void setc(int x,int y, int z) c=z; sera (x); seth (y); void showc() showa(); showb(); coutcend1; ; int main () C c; c.setc(1,2,3); c.showc(); return 0;
43、程序执行后的输出结果是( )。(分数:2.00)A.1,2,3 B.1,1,1C.2,2,2D.3,3,3解析:解析 本题考核派生类的应用。本题中类 A和类 B都是基类。而类 C从类 A公有派生,从类 B处私有派生。所以类 C中的函数成员可以访问类 A和类 B中的公有成员。 在类 C的函数成员 setc()中,调用基类 A的函数成员 seta()对 A的数据成员 a赋值,还调用了基类 B的函数成员 setb()对类 B的数据成员 b赋值,然后对类 C自己的数据成员 c赋值。 在类 C的函数成员 showc()中,调用基类 A的函数成员showa()显示数据成员 a的值,还调用基类 B的函数成员
44、 showb()显示数据成员 b的值,然后输出类 C自己的数据成员 c的值。 在主函数中,先定义派生类的对象 c,然后调用 setc()对 c中的数据成员赋值,然后输出赋值结果。所以程序最后输出应该为:1,2,3。17.一个向量第 1个元素的存储地址是 100,每个元素的长度为 2,则第 5个元素的地址是( )。(分数:2.00)A.110B.108 C.100D.120解析:解析 数据元素的存储位置均取决于第 1个数据元素的存储位置,即: LOC(ai) = LOC(a1)+(i-1)C 基地址 一个数据元素所占字节数 所以第 5个元素的地址=100+2*(5-1)=108。18.以下各项排
45、序技术中属于交换类排序法的是( )。(分数:2.00)A.冒泡排序 B.希尔排序C.堆排序D.简单选择排序解析:解析 所谓交换类排序法是指借助元素之间的相互交换进行排序的一种方法。它包括冒泡排序法和快速排序法。19.数据流图用于描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名称标识的图符不属于数据流图合法图符的是( )。(分数:2.00)A.控制流 B.加工C.贮存文件D.源和潭解析:解析 本题考查考生对数据流图的图形元素的掌握,其中加工、贮存文件、源和潭都是数据流图的合法图符。20.应在下列程序画线处填入的正确语句是 ( )。 #include iostream using namespace std; clas Base public: void fun() cout“Base:fun“end1; ; class Derived : public Base void fun() _/显示调用基类的函数 fun() cout“Derived:fun“end1; ;(分数:2.00)A.fun();B.Basfun();C.Base:fun(); D.Base-fun();解析:解析 作用域分辨符号是“:”,它可以用来限定要访问的成员所在的类的名称。在派生类Derive的定义中显式调用基类的