【计算机类职业资格】二级C++分类模拟277及答案解析.doc

上传人:amazingpat195 文档编号:1324275 上传时间:2019-10-17 格式:DOC 页数:19 大小:93KB
下载 相关 举报
【计算机类职业资格】二级C++分类模拟277及答案解析.doc_第1页
第1页 / 共19页
【计算机类职业资格】二级C++分类模拟277及答案解析.doc_第2页
第2页 / 共19页
【计算机类职业资格】二级C++分类模拟277及答案解析.doc_第3页
第3页 / 共19页
【计算机类职业资格】二级C++分类模拟277及答案解析.doc_第4页
第4页 / 共19页
【计算机类职业资格】二级C++分类模拟277及答案解析.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、二级 C+分类模拟 277 及答案解析(总分:69.00,做题时间:90 分钟)一、选择题(总题数:40,分数:69.00)1.下列关于运算符重载的描述中,正确的是_。(分数:1.00)A.运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C+中可以重载所有的运算符2.设有定义语句 int(*f)(int);,则下列叙述正确的是_。(分数:2.50)A.f 是基类型为 int 的指针变量B.f 是指向函数的指针变量,该函数具有一个 int 类型的形参C.f 是指向 int 类型一维数组的指针变量

2、D.f 是函数名,该函数的返回值是其类型为 int 类型的地址3.下面有关重载函数的说法中,正确的是 _ 。(分数:1.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表D.重载函数名可以不同4.下列关于 goto 语句的描述中,正确的是 _ 。(分数:1.00)A.goto 语句可在一个文件中随意转向B.goto 语句后面要跟一个它所转向的语句C.goto 语句可以同时转向多条语句D.goto 语句可以从一个循环体内转到循环体外5.以下哪个是软件测试的目的?_(分数:2.50)A.证明程序没有错误B.演示程序的正确性C.发现程序中的错误D.

3、改正程序中的错误6.下列语句中错误的是_。(分数:2.00)A.const int a;B.const int a=10;C.const int*point=0;D.const int*point=new int(10);7.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB 的下列定义中,正确的是 _ 。(分数:2.00)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA

4、(a),y(b)C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b):XA(a),XB(b)8.下列符号中能够作为 C+标识符的是_。(分数:2.00)A.constB.2aC._shapeD.-count9.算法的时间复杂度取决于_。(分数:2.50)A.问题的规模B.待处理的数据的初态C.问题的难度D.A 和 B10.下列有关函数重载的叙述中,错误的是_。(分数:1.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同D.重载函数的参数可以带有默认值11.下列程序的输出结果为 _ 。

5、 #includeiostream.h #includeiomanip.h voidmain() coutprecision(4); cout123.127; cout”12346: (分数:1.00)A.123.1 123.4B.123.1 123.46C.123.127 123.46D.123.1123.412.有如下程序: #includeiostream using namespace std; int main() void function(double val); double val; function(val); coutval; return 0; void functio

6、n(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数13.已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是(分数:1.00)A.acbedB.decabC.deabcD.cedba14.下列关于运算符重载的描述中,错误的是_。(分数:1.00)A.可以通过运算符重载在 C+中创建新的运算符B.赋值运算符只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象D.重载类型转换运算符时不需要声明返回类型15.关于函数重载,下列叙

7、述中错误的是_。(分数:3.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同D.重载函数的函数体可以有所不同16.若有如下程序: #includeiostream using namespace std; int s=0; class sample static int n; public: sample(int i) n=i; static void add() S+=n; ; int sample:n=0; int main() sample a(2),b(5); sample:add(); coutsendl; return 0

8、; 程序运行后的输出结果是 _ 。(分数:2.00)A.2B.5C.7D.317.执行下列语句序列: int i=0;while(125)i+=3;couti; 输出结果是_。(分数:1.00)A.24B.25C.27D.2818.有如下程序: #includeiostream using namespace std; class Sample public: Sample() Sample()cout“*“;) ; int main() Sample temp2,*pTemp2; return 0: 执行这个程序输出星号(*)的个数为_。(分数:3.00)A.1B.2C.3D.419.有如下

9、程序段 #include void main( ) int a=14,b=15,x;char c=“A“;x=(a 则对 x 数组元素的正确引用是_。(分数:2.50)A.*x10B.*(x+3)C.*(pt+10)D.pt+321.下列各类函数中,不是类的成员函数的是(分数:2.00)A.构造函数B.析构函数C.友元函数D.拷贝构造函数22.没有如下三个关系表: (分数:1.00)A.T=RSB.T=RSC.T=RSD.T=R/S23.下列有关指针的用法中错误的是 _ 。(分数:2.00)A.int i;int *ptr=B.int i;int *ptr;i=*ptr;C.int *ptr;

10、ptr=0;D.inti=5;int *ptr;*ptr24.在一个被调用函数中,关于 rerun 语句的描述,_ 是错误的。(分数:2.00)A.被调用函数中可以不用 return 语句B.被调用函数中可以使用多个 return 语句C.被调用函数中,如果有返回值,就一定要有 return 语句D.被调用函数中,一个 return 语句可以返回多个值给调用函数25.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int get

11、Count()return count; private: static int count; ; int MyClass:count=0; int main() MyClass obj; Coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是_。(分数:1.00)A.121B.232C.221D.12226.在 E-R 图中,用来表示实体联系的图形是_。(分数:2.50)A.椭圆图B.矩形C.菱形D.三

12、角形27.若变量已正确定义为 inL 型,要通过语句“scanf(“%d,%d“,a,b,c);”给 a 赋值 1、给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是( 代表一个空格符)_。 A 1,2,3回车 B1 2 3回车 C1, 2, (分数:2.50)A.B.C.D.28.下列关于模板形参的描述中,错误的是_。(分数:2.50)A.模板形参表必须在关键字 template 之后B.模板形参表必须用括弧()括起来C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参29.下列关于运算符重载的叙述中,错误的是_。(分数:2.00)A.有的运算符可以作为非成

13、员函数重载B.所有的运算符都可以通过重载而被赋予新的含义C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载30.将前缀运算符“-”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr operator-(DecrC.friend DecrD.friend Decr operator-(Decr31.若 AA 为一个类,a 为该类的非静态数据成员,在该类的一个成员函数定义中访问 a 时,其书写格式为_。(分数:2.50)AaB.AA.aC.a()D.AA:a()32.下列说法中错误的是(分数:1.00)A.公有继承时基类中的

14、public 成员在派生类中仍是 public 成员B.私有继承时基类中的 protecte 成员在派生类中仍是 protected 成员C.私有继承时基类中的 public 成员在派生类中是 private 成员D.保护继承时基类中的 public 成员在派生类中是 protected 成员33.有如下程序: #include iostream using namespace std; class Base private: char c; public: Base(char n) :c(n) Base() coutc; ; class Derived: public Base privat

15、e: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ; int main () Derived obj (“x“); return 0; 执行上面的程序净输出(分数:2.00)A.xyB.yxCxDy34.下列关于虚函数的描述中,正确的是_。(分数:1.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型35.有如

16、下类定义: class Animal public: virtual void Name()=0; ; class Koala:public Animal public: void Name()/*函数体略*/ ; 关于上述类定义,下列描述中错误的是_。(分数:2.50)A.类 Koala 是类 Animal 的派生类B.类 Koala 中的 Name 函数是一个虚函数C.类 Animal 中的 Name 函数是一个纯虚函数D.语句“Animal a;”能够建立类 Animal 的一个对象 a36.实现运行时的多态性要使用 _ 。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数

17、37.有如下程序: #includeiostream using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get()return m; int get()constreturn m+n; ; int main() Pair a(3,5); const Pair b(3,5); couta.get()b.get(); return 0; 运行时的输出结果是_。(分数:2.50)A.33B.38C.83D.8838.以下 for 语句中不是死循环的是_。(分数:1.00)A.for(int

18、 i=0;i1;+i);B.for(int i=0;+i);C.for(int i=1;i0;+i);D.for(;);39.在公有继承的情况下,允许派生类直接访问的基类成员包括_。(分数:1.00)A.公有成员B.公有成员和保护成员C.公有成员、保护成员和私有成员D.保护成员40.层次型、网状型和关系型数据库划分原则是_。(分数:1.00)A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式二级 C+分类模拟 277 答案解析(总分:69.00,做题时间:90 分钟)一、选择题(总题数:40,分数:69.00)1.下列关于运算符重载的描述中,正确的是_。(分数:1.00)A.运

19、算符重载为成员函数时,若参数表中无参数,重载的是一元运算符 B.一元运算符只能作为成员函数重载C.二元运算符重载为非成员函数时,参数表中有一个参数D.C+中可以重载所有的运算符解析:解析 运算符重载为成员函数时,会省略一个参数,如果无参数,表明是一元运算符。一元运算符既可以作为成员函数重载,也可以作为非成员函数重载。二元运算符如果作为非成员函数,则参数表中必须有两个参数。C+有 5 个运算符不能重载,它们是:.(成员访问运算符)、.*(成员指针访问运算符)、:(域运算符)、sizeof(长度运算符)和?:(条件运算符)。故本题答案为 A。2.设有定义语句 int(*f)(int);,则下列叙述

20、正确的是_。(分数:2.50)A.f 是基类型为 int 的指针变量B.f 是指向函数的指针变量,该函数具有一个 int 类型的形参 C.f 是指向 int 类型一维数组的指针变量D.f 是函数名,该函数的返回值是其类型为 int 类型的地址解析:解析 定义语句 int(*f)(int)中 f 是指向函数的指针变量,该函数中也只有一个 int 型的形参。3.下面有关重载函数的说法中,正确的是 _ 。(分数:1.00)A.重载函数必须具有不同的返回值类型B.重载函数形参个数必须不同C.重载函数必须有不同的形参列表 D.重载函数名可以不同解析:解析 函数重载允许用同一个函数名定义多个函数。被重载的

21、函数必须要有不同的形参列表。不可以根据函数返回值类型来重载函数。4.下列关于 goto 语句的描述中,正确的是 _ 。(分数:1.00)A.goto 语句可在一个文件中随意转向B.goto 语句后面要跟一个它所转向的语句C.goto 语句可以同时转向多条语句D.goto 语句可以从一个循环体内转到循环体外 解析:解析 goto 语句也可以跳出循环和 switch 语句,goto 语句无条件地转移程序的执行控制。它总是与一标号相匹配,其形式为:goto 标号;,标号是用户自定义的标识符,它可以处于 goto 语句的前面,也可以处于其后,但标号必须与 goto 语句处于同一个函数中。定义标号时,由

22、一个标识符后面跟一个冒号组成。5.以下哪个是软件测试的目的?_(分数:2.50)A.证明程序没有错误B.演示程序的正确性C.发现程序中的错误 D.改正程序中的错误解析:解析 关于测试目的的基本知识,IEEE 的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求,或是弄清预期结果与实际结果之间的差别。软件测试的目的是发现程序中的错误;而软件调试的目的是改正程序中的错误。6.下列语句中错误的是_。(分数:2.00)A.const int a; B.const int a=10;C.const int*point=0;D.const int*point=new

23、int(10);解析:解析 由关键字 const 声明符号常量的同时必须为其赋初值。7.有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB:public XA int y; public: XB(int a,int b); ; 在构造函数 XB 的下列定义中,正确的是 _ 。(分数:2.00)A.XB:XB(int a,int b):x(a),y(b)B.XB:XB(int a,int b):XA(a),y(b) C.XB:XB(int a,int b):x(a),XB(b)D.XB:XB(int a,int b):XA(a),XB

24、(b)解析:解析 此题考查的是派生类中构造函数的定义。派生类的构造首先要调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。格式:派生类名(构造函数形参表)基类构造函数(形参表)。8.下列符号中能够作为 C+标识符的是_。(分数:2.00)A.constB.2aC._shape D.-count解析:解析 此题考查的是 C+标识符。标识符是由数字、字母以及下划线构成,其第一个字符必须是字母或下划线,中间不能有空格;标识符的长度是任意的,但由于编译系统的限制一般不超过 31 个字符;标识符中的大小写字母是不同的;定义标识符时不能采用系统的保留字。9.算法的时间复杂度取决于_。(

25、分数:2.50)A.问题的规模B.待处理的数据的初态C.问题的难度D.A 和 B 解析:解析 算法的时间复杂度不仅与问题的规模有关,在同一个问题规模下,而且与输入数据有关。即与输入数据所有的可能取值范围、输入各种数据或数据集的概率有关。10.下列有关函数重载的叙述中,错误的是_。(分数:1.00)A.函数重载就是用相同的函数名定义多个函数B.重载函数的参数列表必须不同C.重载函数的返回值类型必须不同 D.重载函数的参数可以带有默认值解析:解析 所谓函数重载是指同一个函数名可以对应着多个函数的实现。每种实现对应着一个函数体,这些函数的名字相同,但是函数参数的类型不同,还允许参数的个数不同,但不能

26、只有函数的返回值类型不同而参数的个数和类型相同的重载。所以本题答案为 C。11.下列程序的输出结果为 _ 。 #includeiostream.h #includeiomanip.h voidmain() coutprecision(4); cout123.127; cout”12346: (分数:1.00)A.123.1 123.4 B.123.1 123.46C.123.127 123.46D.123.1123.4解析:12.有如下程序: #includeiostream using namespace std; int main() void function(double val);

27、double val; function(val); coutval; return 0; void function(double val) val=3; 编译运行这个程序将出现的情况是_。(分数:1.00)A.编译出错,无法运行B.输出:3C.输出:3.0D.输出一个不确定的数 解析:解析 本题考查函数调用及传值方式传递参数,执行函数 function 时,并没有将 3 的值传回来,而 val 又没有初始化,所以会输出一个不确定的值,D 选项正确。13.已知二叉树后序遍历序列是 dabec,中序遍历序列是 debac,它的前序遍历序列是(分数:1.00)A.acbedB.decabC.de

28、abcD.cedba 解析:解析 依据后序遍历序列可确定根结点为 c;再依据中序遍历序列可知其左子树由 deba 构成,右子树为空;又由左子树的后序遍历序列可知其根结点为 e,由中序遍历序列可知其左子树为 d,右子树由 ba 构成,如下图所示。求得该二叉树的前序遍历序列为选项 D)。 14.下列关于运算符重载的描述中,错误的是_。(分数:1.00)A.可以通过运算符重载在 C+中创建新的运算符 B.赋值运算符只能重载为成员函数C.运算符函数重载为类的成员函数时,第一操作参数就是该类对象D.重载类型转换运算符时不需要声明返回类型解析:解析 运算符的重载是针对 C+中原有运算符进行的,不能通过重载

29、创造新的运算符。15.关于函数重载,下列叙述中错误的是_。(分数:3.00)A.重载函数的函数名必须相同B.重载函数必须在参数个数或类型上有所不同C.重载函数的返回值类型必须相同 D.重载函数的函数体可以有所不同解析:解析 此题考查的是函数重载。在 C+语言中,允许定义一系列函数名相同,但形参的个数和类型不完全相同的函数,即函数的重载。重载函数对返回值类型不做要求,返回值类型也不参与区分函数的重载形式。16.若有如下程序: #includeiostream using namespace std; int s=0; class sample static int n; public: samp

30、le(int i) n=i; static void add() S+=n; ; int sample:n=0; int main() sample a(2),b(5); sample:add(); coutsendl; return 0; 程序运行后的输出结果是 _ 。(分数:2.00)A.2B.5 C.7D.3解析:解析 执行语句“sample a(2),b(5)”;的结果是使 n 的值最终变为 5,sample:add()语句调用函数 static void add(),使得 s=s+n=5。17.执行下列语句序列: int i=0;while(125)i+=3;couti; 输出结果是

31、_。(分数:1.00)A.24B.25C.27 D.28解析:解析 本题考查循环语句 while 的使用。i 为 3 的倍数,当 i=24 时,i25,执行 while 的循环体 i+=3,则 i=27,不满足 i25 的条件,结束循环。18.有如下程序: #includeiostream using namespace std; class Sample public: Sample() Sample()cout“*“;) ; int main() Sample temp2,*pTemp2; return 0: 执行这个程序输出星号(*)的个数为_。(分数:3.00)A.1B.2 C.3D.

32、4解析:解析 在 main 函数中,定义了 Sample temp2的一个包含两个对象的数组,还定义了一个*pTemp2,是包含两个指向类对象的指针的数组,故定义的指针当 main 函数结束后是不会调用析构函数的,只有包含两个对象的数组 temp2会调用析构函数,因此只输出两个*。19.有如下程序段 #include void main( ) int a=14,b=15,x;char c=“A“;x=(a 则对 x 数组元素的正确引用是_。(分数:2.50)A.*x10B.*(x+3) C.*(pt+10)D.pt+3解析:解析 在 C 语言中,数组名是一个存放地址值的指针变量名,其地址值是数

33、组第一个元素的地址也是数组所占一串连续存储单元的起始地址。因为数组的下标是从 0 开始的,所以选项 B 中,x+3 表示数组 x10中的第四个元素的地址,在其前面加上星号,表示是数组 x10中的第四个元素中的值。所以正确答案为选项 B。选项 A、C 的地址范围超出数组 x10中元素的地址范围,选项 D 表示的是地址值。21.下列各类函数中,不是类的成员函数的是(分数:2.00)A.构造函数B.析构函数C.友元函数 D.拷贝构造函数解析:解析 构造函数包括默认构造函数和拷贝构造函数等,析构函数和构造函数一样属于类的特殊的成员函数。而友元函数则是为了增加类的访问灵活行而允许其他类的成员函数或全局函

34、数访问类的内部变量或成员函数的一种机制,其缺点是破坏了类的封装性。22.没有如下三个关系表: (分数:1.00)A.T=RSB.T=RSC.T=RS D.T=R/S解析:解析 关系代数中的集合运算有并、差、交和笛卡儿积四种。根据本题关系 T 中的元组可知,它是由关系 R 和关系 S 进行笛卡儿积运算得到的。23.下列有关指针的用法中错误的是 _ 。(分数:2.00)A.int i;int *ptr=B.int i;int *ptr;i=*ptr; C.int *ptr;ptr=0;D.inti=5;int *ptr;*ptr解析:24.在一个被调用函数中,关于 rerun 语句的描述,_ 是错

35、误的。(分数:2.00)A.被调用函数中可以不用 return 语句B.被调用函数中可以使用多个 return 语句C.被调用函数中,如果有返回值,就一定要有 return 语句D.被调用函数中,一个 return 语句可以返回多个值给调用函数 解析:解析 被调用函数中,一个 return 语句只能返回一个值给调用函数。25.有如下程序: #includeiostream using namespace std; class MyClass public: MyClass()+count; MyClass()-count; static int getCount()return count;

36、private: static int count; ; int MyClass:count=0; int main() MyClass obj; Coutobj.getCount(); MyClass*ptr=new MyClass; coutMyClass:getCount(); delete ptr; coutMyClass:getCount(); return 0; 程序的输出结果是_。(分数:1.00)A.121 B.232C.221D.122解析:解析 本题考查的知识点是静态成员。类中的静态成员是解决同一个类的不同对象之间的数据和函数共享问题的。静态成员被所有属于这个类的对象共享。

37、这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保证了安全性。题目中,首先定义了一个 obj 对象,其构造函数使 MyClass 的静态数据成员 count 增 1,所以第一条输出语句输出的结果是 1。然后通过指针动态创建了一个 MyClass 类的对象,构造函数再次被调用,count 变为 2,所以第二次输出结果是 2。接下来是用 dilete 删除了刚才动态创建的 MyClass 对象。析构函数被调用,count 减 1 变为 1,第三次输出 1。故本题的输出为 121。26.在 E-R 图中,用来表示实体联系的图形是_。(分数:2.50)A.椭圆图B.矩形C.菱形 D.三角

38、形解析:解析 E-R 图用矩形表示实体,椭圆形表示属性,菱形表示实体之间的联系。27.若变量已正确定义为 inL 型,要通过语句“scanf(“%d,%d“,a,b,c);”给 a 赋值 1、给 b 赋值 2、给 c 赋值 3,以下输入形式中错误的是( 代表一个空格符)_。 A 1,2,3回车 B1 2 3回车 C1, 2, (分数:2.50)A.B. C.D.解析:解析 本题考查 scanf 函数的用法,其调用格式为: scanf(格式字符串,输入项地址表); 功能是按格式字符串中规定的格式,在键盘上输入各输入项的数据,并依次赋给各输入项。 当需要从键盘上输入数据时,直到按下回车键,scan

39、f 函数才会接受从键盘输入的数据。选项 B 中,每一个变量输入后都有一个空格是不正确的。28.下列关于模板形参的描述中,错误的是_。(分数:2.50)A.模板形参表必须在关键字 template 之后B.模板形参表必须用括弧()括起来 C.可以用 class 修饰模板形参D.可以用 typename 修饰模板形参解析:解析 主要考查函数模板的定义。声明一个函数模板的格式为“tcmplate模板形参表声明函数声明”,其中具有 typename参数名、class参数名、类型修饰参数名三种形式,形参用“”括起来。29.下列关于运算符重载的叙述中,错误的是_。(分数:2.00)A.有的运算符可以作为非

40、成员函数重载B.所有的运算符都可以通过重载而被赋予新的含义 C.不得为重载的运算符函数的参数设置默认值D.有的运算符只能作为成员函数重载解析:解析 “运算符重载”是针对 C+中原有运算符进行的,不可能通过重载创造新的运算符。除了*,.*,-*,:,?:,这五个运算符以外,其他运算符都可以重载。30.将前缀运算符“-”重载为非成员函数,下列原型中能正确用于类中说明的是_。(分数:1.00)A.DecrB.Decr operator-(DecrC.friend DecrD.friend Decr operator-(Decr 解析:解析 非成员函数重载用友元函数的形式实现,“-”运算符重载分为前置

41、和后置两种重载方式。用友元函数来实现“-”运算符的重载时,前置“-”运算符的重载的一般格式为:friendtypeoperator-(ClassName class Base private: char c; public: Base(char n) :c(n) Base() coutc; ; class Derived: public Base private: char c; public: Derived(char n):Base(n+1),c(n) Derived() coutc; ; int main () Derived obj (“x“); return 0; 执行上面的程序净输

42、出(分数:2.00)A.xy B.yxCxDy解析:解析 在 C+中,由于析构函数不能被继承,因此在执行派生类的析构函数时,基类的析构函数也将被调用。执行顺序是先执行派生类的析构函数,再执行基类的析构函数,其顺序与执行构造函数的顺序正好相反。在此题的程序中,在主函数 main 结束时,派生类 Derived 对象 obj 将被删除,所以就会调用对象的析构函数。先调用派生类的析构函数,输出 x,然后调用基类的析构函数,输出 y。34.下列关于虚函数的描述中,正确的是_。(分数:1.00)A.虚函数是一个 static 类型的成员函数B.虚函数是一个非成员函数C.基类中采用 virtual 说明一

43、个虚函数后,派生类中定义相同原型的函数时可不必加 virtual 说明 D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型解析:解析 在成员函数声明的前面加上 virtual 关键字即把该函数声明为虚函数。虚函数可以是另一个类的友元函数,但不是静态成员函数。在派生类中可以重新定义从基类继承下来的虚函数,在派生类中重新定义虚函数时,函数名、形参表和返回值类型必须保持不变。35.有如下类定义: class Animal public: virtual void Name()=0; ; class Koala:public Animal public: void Name()/*函

44、数体略*/ ; 关于上述类定义,下列描述中错误的是_。(分数:2.50)A.类 Koala 是类 Animal 的派生类B.类 Koala 中的 Name 函数是一个虚函数C.类 Animal 中的 Name 函数是一个纯虚函数D.语句“Animal a;”能够建立类 Animal 的一个对象 a 解析:36.实现运行时的多态性要使用 _ 。(分数:2.00)A.重载函数B.析构函数C.构造函数D.虚函数 解析:解析 C+中函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就能决定调用的是哪个函数。动态多态性是在程序运行过程中才动态确定操作所针对的对象。动态多态性是通过虚函数实现

45、的。37.有如下程序: #includeiostream using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get()return m; int get()constreturn m+n; ; int main() Pair a(3,5); const Pair b(3,5); couta.get()b.get(); return 0; 运行时的输出结果是_。(分数:2.50)A.33B.38 C.83D.88解析:解析 生成对象时,系统要先自动调用构造函数,初始化数据成员。注意,由

46、于常对象不能被更新,所以,常对象只能调用常成员函数,不能调用其他成员函数;而一般对象既可以调用常成员函数,也可以调用一般成员函数。 const 关键字可以用于参与对重载函数的区分。重载的原则是:常对象调用常成员函数,一般对象调用一般成员函数。当然,如果类中只有一个常成员函数时,一般对象也可以调用该常成员函数。所以,题中,一般对象 a 调用的是一般成员函数,输出 m 的值,即为 3;而常对象 b 调用的是常成员函数,输出 m+n 的值,即为 8。38.以下 for 语句中不是死循环的是_。(分数:1.00)A.for(int i=0;i1;+i); B.for(int i=0;+i);C.for

47、(int i=1;i0;+i);D.for(;);解析:解析 本题考查循环语句 for 的使用。for 循环开始时,首先执行初始化操作,然后判断终止条件是否满足,如果满足,则执行循环体中的语句,最后执行迭代部分。完成一次循环后,重新判断终止条件。在 for 语句中,如果省略了终止条件判断部分,并且在语句中没有 break,或终止条件判断部分始终没有终止,都将出现死循环。39.在公有继承的情况下,允许派生类直接访问的基类成员包括_。(分数:1.00)A.公有成员B.公有成员和保护成员 C.公有成员、保护成员和私有成员D.保护成员解析:解析 本题考查公用继承对基类成员的访问属性。在公用继承中,基类的公用成员和保护成员在派生类中保持原有的访问属性,其私有成员仍为基类私有。所以本题答案为 B。40.层

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1