1、二级 C+-175 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.循环队列是队列的一种链式存储结构B.循环队列是一种逻辑结构C.循环队列是队列的一种顺序存储结构D.循环队列是非线性结构2.下列叙述中正确的是_。(分数:2.50)A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对3.一棵二叉树共有 25 个结点,其中 5 个是叶子结点,则度为 1 的结点数为_。(分数:2.50)A.16B.10C.6D.44.在下列模式中,能够给出数据库物
2、理存储结构与物理存取方法的是_。(分数:2.50)A.外模式B.内模式C.概念模式D.逻辑模式5.在满足实体完整性约束的条件下_。(分数:2.50)A.一个关系中应该有一个或多个候选关键字B.一个关系中只能有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中可以没有候选关键字6.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B并C交D差7.软件生命周期的活动中不包括_。(分数:2.50)A.市场调研B.需求分析C.软件测试D.软件维护8.下面不属于需求分析阶段任务的是_。(分数:2.50)A.确定软件系统的功能需求B.确定软件系统的性能需求C.需求规格说明书评审
3、D.制订软件集成测试计划9.在黑盒测试方法中,设计测试用例的主要根据是_。(分数:2.50)A.程序内部逻辑B.程序外部功能C.程序数据结构D.程序流程图10.在软件设计中不使用的工具是_。(分数:2.50)A.系统结构图B.PAD 图C.数据流图(DFD 图)D.程序流程图11.下列叙述中,不属于结构化分析方法的是_。(分数:2.50)A.面向数据流的结构化分析方法B.面向数据结构的 Jackson 方法C.面向数据结构的结构化数据系统开发方法D.面向对象的分析方法12.检查软件产品是否符合需求定义的过程称为_。(分数:2.50)A.确认测试B.集成测试C.验证测试D.验收测试13.数据流图
4、用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。(分数:2.50)A.控制流B.加工C.数据存储D.源和潭14.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是_。(分数:2.50)A.数据库系统B.文件系统C.人工管理D.数据项管理15.数据库系统的核心是_。(分数:2.50)A.数据库B.数据库管理系统C.数据模型D.软件工具16.若一个函数的原型为“int * Xfun1(int x.int”,则该函数的返回值类型为_。(分数:2.50)A.int*B.intC.int
5、B.XV*(XV);C.operator*(XV);D.XV operator*(XV);20.在定义函数模板或类模板时,开头的保留字是_。(分数:2.50)A.typenameB.templateC.classD.typedef21.若需要向一个二进制文件尾部添加数据,则该文件的打开方式为_。(分数:2.50)A.ios_base:appB.ios_base:binary | ios_base:outC.ios_base:outD.ios_base:binary | ios_base:app22.在开发一个 C+程序的整个过程中,第 3 个步骤为_。(分数:2.50)A.链接B.运行C.编辑
6、D.编译23.若有定义“int x=4, y=5;”,则表达式“yx+?x-:y+”的值为_。(分数:2.50)A.3B.4C.5D.624.有如下程序: #includeiostream using namespace std; int main() int i, s=0; for(i=1; s20; i+=2)s+=i*i; coutiendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.5C.7D.925.若字符指针 p 所指向的字符串为”abcdefg”,在执行语句 char*ap=new charstrlen(p)+1;之后,ap 指向的字符数组的元
7、素个数为_。(分数:2.50)A.9B.8C.7D.626.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10, y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.22B.23C.24D.2527.有如下程序: #includeiostream using namespace std; class XA int a; public: static int b; XA(int
8、 aa):a(aa)b+; int getA()return a; ; int XA:b=0; int main() XA d1(4), d2(5); coutd1.getA()+d2.getA()+XA:b+d1.bendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.9B.11C.13D.1528.有如下程序: #includeiostream using namespace std; class XX int x; public: XX(int xx=0):x(xx) int getX()return x; ; class YY:public XX int y
9、; public: YY(int xx, int yy):x(xx), y(yy) int getV()return getX()+y; ; int main() YY c(3, 4); coutc.getV()+c.getX()endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.4C.7D.1029.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.50)A.静态函数B.友元函数C.成员函数D.构造函数30.若有函数模板 mySwap 和一些变量定义如下: templateclass T void mySwap(T X, T Y); double d
10、1, d2; int i1, i2; 下列对 mySwap 的调用中,错误的是_。(分数:2.50)A.mySwap(i1, i2)B.mySwap(d1, d2)C.mySwap(i1, d1)D.mySwapint(i2, d2)31.在 C+中,打开一个文件时与该文件建立联系的是_。(分数:2.50)A.流对象B.模板C.函数D类32.已知类 IMS 中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是_。(分数:2.50)A.obj
11、1.listen();B.obj1.speak();C.obj2.listen();D.obj2.speak();33.有如下程序: #includeiostream using namespace std; class Monkey public: Monkey()cout“M“; Monkey(char n)coutn; Monkey()cout“Y“; ; int main() Monkey p1, *p2; p2=new Monkey(“X“); delete p2; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.MYXB.MYMYC.MXYD.MXYY34.有
12、如下程序: #includeiostream using namespace std; class Boat; class Car public: Car(int i):weight(i) friend int Total(const Car / private: int weight; ; class Boat public: Boat(int i):weight(i) friend int Total(const Car private: int weight; ; int Total(const Car int main() Car c(10); Boat b(8); cout“The
13、total weight is“Total(c, b)endl; / return 0; 下列关于程序的描述中,正确的是_。(分数:2.50)A.程序编译正确B.程序编译时语句出错C.程序编译时语句出错D.程序编译时语句出错35.有如下程序: #includeiostream using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book:private Media public: void Print()coutpageendl; void Show()M
14、edia:Show();/ ; int main() Book Bible; Bible.Name();/ Bible.Print();/ Bible.Show();/ return 0; 编译时有错误的是_。(分数:2.50)A.语句B.语句C.语句D.语句36.有如下程序: #includeiostream using namespace std; class Base public: virtual void Show()cout“B“; ; class Derived:public Base public: void Show()cout“D“; ; int main()( Base
15、*p1=new Derived; Derived *p2=new Derived; p1-Show(); p2-Show(); delete p1; delete p2; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.BBB.BDC.DBD.DD37.有如下类定义: class Animal public: virtual void Name()=0; ; class Koala:public Animal public: void Name()/*函数体略*/ ; 关于上述类定义,下列描述中错误的是_。(分数:2.50)A.类 Koala 是类 Animal 的派生类
16、B.类 Koala 中的 Name 函数是一个虚函数C.类 Animal 中的 Name 函数是一个纯虚函数D.语句“Animal a;”能够建立类 Animal 的一个对象 a38.已知类 MyClock 中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: MyClock c1, c2; / c2=c1+10; 由此可知,为类 MyClock 重载的“+”运算符函数的声明是_。(分数:2.50)A.friend MyClock operator+(MyClock, int);B.friend MyClock operator+(MyClock, MyClock);C.
17、friend MyClock operator+(int, MyClock);D.MyClock operator+(MyClock);39.下列控制对齐方式的操作符中,错误的是_。(分数:2.50)A.internalB.centerC.leftD.right40.有如下程序: #includeiostream using namespace std; class Mountain int height; public: Mountain(int h=0):height(h) virtual char *GetName()constreturn“山“; int GetHeight() con
18、streturn height; ; class Lushan:public Mountain public: Lushan(int d):Mountain(d) char *GetName()constreturn“庐山“; ; int main() Mountain *p=new Lushan(1000); coutp-GetName()“海拔“ p-GetHeight()“米“; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.庐山海拔 1000 米B.庐山海拔 0 米C.山海拔 1000 米D.山海拔 0 米二级 C+-175 答案解析(总分:100.00,做题时
19、间:90 分钟)一、选择题(总题数:40,分数:100.00)1.下列叙述中正确的是_。(分数:2.50)A.循环队列是队列的一种链式存储结构B.循环队列是一种逻辑结构C.循环队列是队列的一种顺序存储结构 D.循环队列是非线性结构解析:解析 顺序存储就是指用一组连续的存储单元依次存储,链式存储内存中地址小是挨着的,循环队列增设了头指针和尾指针,实现空间的最大利用。2.下列叙述中正确的是_。(分数:2.50)A.栈是一种先进先出的线性表B.队列是一种后进先出的线性表C.栈与队列都是非线性结构D.以上三种说法都不对 解析:解析 栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作
20、的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈,删除则称为退栈。饯也称为后进先出表。3.一棵二叉树共有 25 个结点,其中 5 个是叶子结点,则度为 1 的结点数为_。(分数:2.50)A.16 B.10C.6D.4解析:解析 二叉树中,度为 0 的结点(即叶子结点)比度为二的结点多 1 个,而度为 0、1、2 的结点相加等于总结点数 25,所以度为 1 的结点数为 25-5-(5-1)=16。4.在下列模式中,能够给出数据库物理存储结构与物理存取方法的是_。(分数:2.50)A.外模式B.内模式 C.概念模式D.逻辑
21、模式解析:解析 内模式出了数据库物理存储结构与物理存取方法。它处于最底层,反映了数据在计算机物理结构中的实际存储形式。5.在满足实体完整性约束的条件下_。(分数:2.50)A.一个关系中应该有一个或多个候选关键字 B.一个关系中只能有一个候选关键字C.一个关系中必须有多个候选关键字D.一个关系中可以没有候选关键字解析:解析 一个关系对应脱实世界中一个实体集。现实世界中的实体是可以相互区分、识别的,也即它们应具有某种唯一性标识。在关系模式中,以主关键字作为唯一性标识,而主关键字中的属性(称为主属性)不能取空值,否则,表明关系模式中存在着不可标识的实体(因空值是“不确定/”的),这与现实世界的实际
22、情况相矛盾,这样的实体就不是一个完整实体。按实体完整性规则要求,主属性不得取空值,如主关键字是多个属性的组合,则所有主属性均不得取空值。6.有三个关系 R、S 和 T 如下: (分数:2.50)A.自然连接B并C交D差 解析:解析 并:没有两个关系 R 和 S,它们具有相同的结构。R 和 S 的并是由属于 R 或属于 S 的元组组成的集合,运算符为。记为 T=RS。差:R 和 S 的差是由属于 R 但不属于 S 的元组组成的集合,运算符为一。记为 T=R-S。交:R 和 S 的交是由既属于 R 又属于 S 的元组组成的集合,运算符为。记为T=RS。RS=R(R-S)。综上所述,答案选 D。7.
23、软件生命周期的活动中不包括_。(分数:2.50)A.市场调研 B.需求分析C.软件测试D.软件维护解析:解析 软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级剑废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。8.下面不属于需求分析阶段任务的是_。(分数:2.50)A.确定软件系统的功能需求B.确定软件系统的性能需求C
24、.需求规格说明书评审D.制订软件集成测试计划 解析:解析 需求分析:开发人员准确地理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的需求规格说明的过程。基本任务:(1)问题识别:双方确定对问题的综合需求,这些需求包括功能需求、性能需求、环境需求、用户界面需求。(2)分析与综合,导出软件的逻辑模型。(3)编写文档:包括编写”需求规格说明书”、”初步用户使用手册”、”确认测试计划”、”修改完善软件开发计划”。9.在黑盒测试方法中,设计测试用例的主要根据是_。(分数:2.50)A.程序内部逻辑B.程序外部功能 C.程序数据结构D.程序流程图解析:
25、解析 因为黑盒测试是对代码不可见的,所以和代码相关的内部逻辑、数据结构、程序流程都是不能选的。10.在软件设计中不使用的工具是_。(分数:2.50)A.系统结构图B.PAD 图C.数据流图(DFD 图) D.程序流程图解析:解析 系统结构图:是对软什系统结构的总体设计的图形显示。在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在慨要设计阶段用到的。PAD 图 PAD 是问题分析图(Problem Analysis Diagram)的英文缩写,是在详细设计阶段用到的。数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统
26、必须完成的逻辑功能,所以它是一种功能模型,是存可行性研究阶段用到的,所以存设计阶段不用这个。故答案选 C。11.下列叙述中,不属于结构化分析方法的是_。(分数:2.50)A.面向数据流的结构化分析方法B.面向数据结构的 Jackson 方法C.面向数据结构的结构化数据系统开发方法D.面向对象的分析方法 解析:解析 常见的需求分析方法有结构化分析方法和面向对象的分析方法两类。其中结构化分析方法又包括面向数据流的结构化分析方法(Structured Analysis,SA)、面向数据结构的 Jackson 方法(Jackson System Development method,JSD)和面向数据
27、结构的结构化数据系统开发方法(Data Structured System Developmemt method,DSSD)。12.检查软件产品是否符合需求定义的过程称为_。(分数:2.50)A.确认测试 B.集成测试C.验证测试D.验收测试解析:解析 确认测试的任务是验证软件的功能和性能及其他特性是否满足了需求规格说明中确定的各种需求,以及软件配置是否完全、正确。13.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_。(分数:2.50)A.控制流 B.加工C.数据存储D.源和潭解析:解析 数据流图中的主要图形元素有加工、数
28、据流、存储文件和源。14.在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是_。(分数:2.50)A.数据库系统 B.文件系统C.人工管理D.数据项管理解析:解析 数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。15.数据库系统的核心是_。(分数:2.50)A.数据库B.数据库管理系统 C.数据模型D.软件工具解析:解析 数据库管理系统是数据库系统的核心。16.若一个函数的原型为“int * Xfun1(int x.int”,则该函数的返回值类型为_。(分数:2.50)A.int* B.intC.intB.XV
29、*(XV);C.operator*(XV);D.XV operator*(XV); 解析:解析 运算符重载形式有两种:一种是重载为类的成员函数;另一种是重载为类的友员函数。具体格式: 函数类型 operator 运算符(参数表) 函数体: 20.在定义函数模板或类模板时,开头的保留字是_。(分数:2.50)A.typenameB.template C.classD.typedef解析:解析 template 是一个声叫模板的天键字,表示声明一个模板关键字 class 不能省略,如果类型形参多余一个,每个形参前都要加 class类型形参表可以包含基本数据类型可以包含类类型。故答案选 A。21.若
30、需要向一个二进制文件尾部添加数据,则该文件的打开方式为_。(分数:2.50)A.ios_base:appB.ios_base:binary | ios_base:out C.ios_base:outD.ios_base:binary | ios_base:app解析:解析 打开文件的方式在类 ios(是所有流式 I/O 类的基类)中定义,常用的值如下:ios:app:以追加的方式打开文件;ios:atc:文件打开后定位到文件尾,ios:app 就包含有此属性;ios:binary:以二进制方式打开文件,默认的方式是文本方式。两利一方式的区别见前文;ios:in:文件以输入方式打开;ios:ou
31、t:文件以输出方式打开;ios:nocreate:不建立文件,所以文件不存在时打开失败;ios:noreplace:不覆盖文件,所以打开文件时如果文件存在失败;ios:trunc:如果文件存存,把文件长度设为 0;可以用“或”把以上属性连接起来,如 ios:out|ios:binary。22.在开发一个 C+程序的整个过程中,第 3 个步骤为_。(分数:2.50)A.链接 B.运行C.编辑D.编译解析:解析 在开发一个 C+程序的整个过程中,经过以下几个步骤:编辑编洋链接运行。故答案为 A。23.若有定义“int x=4, y=5;”,则表达式“yx+?x-:y+”的值为_。(分数:2.50)
32、A.3B.4C.5 D.6解析:解析 “条件表达式”是 C+中可以产生“真”和“假”结果的任何表达式,如果条件表达式的结果为“真”,则执行表达式 1,否则执行表达式 2。24.有如下程序: #includeiostream using namespace std; int main() int i, s=0; for(i=1; s20; i+=2)s+=i*i; coutiendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.5C.7D.9 解析:解析 for 语句执行过程如下:先求解表达式 1;求解表达式 2,若其值为真(值为非 0),则执行 for 语句中
33、指定的内嵌语句,然后执行下而第步。若为假(值为 0),则结束循环,转到第步;求解表达式 3;转回上而第步骤继续执行;循环结束,执行 for 语句下面的一个语句?25.若字符指针 p 所指向的字符串为”abcdefg”,在执行语句 char*ap=new charstrlen(p)+1;之后,ap 指向的字符数组的元素个数为_。(分数:2.50)A.9B.8 C.7D.6解析:解析 “char*ap=new charstrlen(str)+1;”语句的意思是“动态分配一个长度为 strlen(str)+1 的字符数组空间,并把数组首地址赋给指针变量 char*ap”,而 strlen(str)是
34、头文件“abcdefg”中计算字符串长度的函数。26.有如下程序: #includeiostream using namespace std; void f1(int void f2(int x)+x; int main() int x=10, y=12; f1(x); f2(y); coutx+yendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.22B.23 C.24D.25解析:解析 该题考查的是虚函数的调用。27.有如下程序: #includeiostream using namespace std; class XA int a; public: sta
35、tic int b; XA(int aa):a(aa)b+; int getA()return a; ; int XA:b=0; int main() XA d1(4), d2(5); coutd1.getA()+d2.getA()+XA:b+d1.bendl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.9B.11C.13 D.15解析:解析 该题考查的是构造函数的问题。28.有如下程序: #includeiostream using namespace std; class XX int x; public: XX(int xx=0):x(xx) int getX
36、()return x; ; class YY:public XX int y; public: YY(int xx, int yy):x(xx), y(yy) int getV()return getX()+y; ; int main() YY c(3, 4); coutc.getV()+c.getX()endl; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.3B.4C.7 D.10解析:解析 该题考查的是析构函数的问题。29.在类中重载赋值运算符时,应将其声明为类的_。(分数:2.50)A.静态函数B.友元函数C.成员函数 D.构造函数解析:解析 实际上不一定是必需
37、的,保证运算符重载函数在同一个名字空间里就行了。不过如果不是成员函数或者友元,不能直接访问类的私有成员。另外,C+里赋值=、下标、调用()和成员访问箭头-操作符必须被定义为类成员操作符。30.若有函数模板 mySwap 和一些变量定义如下: templateclass T void mySwap(T X, T Y); double d1, d2; int i1, i2; 下列对 mySwap 的调用中,错误的是_。(分数:2.50)A.mySwap(i1, i2)B.mySwap(d1, d2)C.mySwap(i1, d1)D.mySwapint(i2, d2) 解析:解析 template
38、class identifierfunction_declaration;templatetypename identifierfunction_declaration; 上面两种原型定义的不同之处在关键字 class 或 typename 的使用。它们实际是完全等价的,因为两种表达的意思和执行都一样。31.在 C+中,打开一个文件时与该文件建立联系的是_。(分数:2.50)A.流对象 B.模板C.函数D类解析:解析 打开文件就是将该文件与输入/输出流建立了联系。32.已知类 IMS 中两个成员函数的声明为“void listen()const;”与“void speak();”,另有两个对象
39、的定义为“IMS obj1;”与“const IMS obj2;”,则下列语句中,产生编译错误的是_。(分数:2.50)A.obj1.listen();B.obj1.speak();C.obj2.listen();D.obj2.speak(); 解析:解析 引用,其实就是给某个变量起个别名,这个别名代表的还是那个变量,如果用这个别名使用这个变量,那么使用的就是变量的本身。如果对这个别名的内容进行修改,那么修改的就是被绑定别名的变量的本身。如果对引用加上 const 限定,那么,别名就不能在修改变量本身。33.有如下程序: #includeiostream using namespace std
40、; class Monkey public: Monkey()cout“M“; Monkey(char n)coutn; Monkey()cout“Y“; ; int main() Monkey p1, *p2; p2=new Monkey(“X“); delete p2; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.MYXB.MYMYC.MXYD.MXYY 解析:解析 该题考查的是析构函数的问题。34.有如下程序: #includeiostream using namespace std; class Boat; class Car public: Car(int
41、i):weight(i) friend int Total(const Car / private: int weight; ; class Boat public: Boat(int i):weight(i) friend int Total(const Car private: int weight; ; int Total(const Car int main() Car c(10); Boat b(8); cout“The total weight is“Total(c, b)endl; / return 0; 下列关于程序的描述中,正确的是_。(分数:2.50)A.程序编译正确B.程
42、序编译时语句出错 C.程序编译时语句出错D.程序编译时语句出错解析:解析 该题考查的是由友员函数的问题。第一句中友元函数重载应该把点号换为逗号。35.有如下程序: #includeiostream using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book:private Media public: void Print()coutpageendl; void Show()Media:Show();/ ; int main() Book Bible; B
43、ible.Name();/ Bible.Print();/ Bible.Show();/ return 0; 编译时有错误的是_。(分数:2.50)A.语句B.语句 C.语句D.语句解析:解析 类名“Name”,不能访问公共内存,函数在执行到这句时自动结束。36.有如下程序: #includeiostream using namespace std; class Base public: virtual void Show()cout“B“; ; class Derived:public Base public: void Show()cout“D“; ; int main()( Base *
44、p1=new Derived; Derived *p2=new Derived; p1-Show(); p2-Show(); delete p1; delete p2; return 0; 运行这个程序的输出结果是_。(分数:2.50)A.BBB.BDC.DBD.DD 解析:解析 该题考查的是 C+中 delete 函数的应用。37.有如下类定义: class Animal public: virtual void Name()=0; ; class Koala:public Animal public: void Name()/*函数体略*/ ; 关于上述类定义,下列描述中错误的是_。(分数
45、:2.50)A.类 Koala 是类 Animal 的派生类B.类 Koala 中的 Name 函数是一个虚函数C.类 Animal 中的 Name 函数是一个纯虚函数D.语句“Animal a;”能够建立类 Animal 的一个对象 a 解析:解析 类 Koala 是类 Animal 的派生类;类 Animal 中的 Name 函数是一个纯虚函数;语句”Animal a;”不能够建立类 Animal 的对象,纯虚类不能建立对象。38.已知类 MyClock 中未显式定义构造函数,并重载了加法运算符,使得下面的语句序列能够正确执行: MyClock c1, c2; / c2=c1+10; 由此
46、可知,为类 MyClock 重载的“+”运算符函数的声明是_。(分数:2.50)A.friend MyClock operator+(MyClock, int); B.friend MyClock operator+(MyClock, MyClock);C.friend MyClock operator+(int, MyClock);D.MyClock operator+(MyClock);解析:解析 operator 它有两种用法,一种是 operator overloading(操作符重载),另一种是operator casting。1.operator overloading C+可以通过 operator 重载操作符,(操作隐式转换)格式如下:类型 T operator 操作符() 1templatetypename Tclass A2 2const T operator+(const T class Mountain int height; public: Mountain(int h=0):height(h) virtual char *GetName()constreturn“山“; int GetHeight() constreturn height; ; class Lushan:public Mountain public: L