【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案_第1页
【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案_第2页
【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案_第3页
【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案_第4页
【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案_第5页
已阅读5页,还剩51页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【答案】《面向对象程序设计(C++)》(河南农业大学)章节期末慕课答案有些题目顺序不一致,下载后按键盘ctrl+F进行搜索第一部分面向对象方法与C++概述第一单元面向对象方法与C++概述单元测验1.单选题:对于int*pa[5];的描述,正确的是()

选项:

A、pa是一个指向数组的指针,所指向的数组是5个int型元素

B、pa是一个指向某个数组中第5个元素的指针,该元素是int型变量

C、pa[5]表示某个数组的第5个元素的值

D、pa是一个具有5个元素的指针数组,每个元素是一个int型指针

答案:【pa是一个具有5个元素的指针数组,每个元素是一个int型指针】2.单选题:下列关于形参的说法正确的是()

选项:

A、函数的形参并非是必须的,有时可以不要,这时其函数头如fun()

B、函数的形参可以是表达式

C、函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调用完毕也就被释放了

D、形参的名称、类型、数量、顺序必须与实参都相同,否则实参不会把信息正确的传递给形参

答案:【函数在定义时,形参是不占用存储空间的,只是在被调用时才会占,调用完毕也就被释放了】3.单选题:C++对C语言做了很多改进,即从面向过程变成为面向对象的主要原因是()

选项:

A、增加了一些新的运算符

B、允许函数重载,并允许设置缺省参数

C、规定函数说明符必须用原型

D、引进了类和对象的概念

答案:【引进了类和对象的概念】4.单选题:假定有“char*p=“Hello”;”,若要输出这个字符串的地址值正确的写法为()

选项:

A、cout<<*p;

B、cout<<br>C、cout<<&p;

D、cout<<(void*)p;

答案:【cout<】5.单选题:在下面的二维数定义正确的是()

选项:

A、intary[5][];

B、intary[][5]={{0,1,2}};

C、intary[][5];

D、intary[5,5];

答案:【intary[][5]={{0,1,2}};】6.单选题:关于动态存储分配,下列说法正确的是()

选项:

A、new和delete是C++语言中专门用于动态内存分配和释放的函数

B、动态分配的内存空间也可以被初始化

C、当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必要使用delete释放内存空间

D、当动态分配内存失败时,系统回立刻崩溃,因此一定要谨慎使用new

答案:【动态分配的内存空间也可以被初始化】7.单选题:下列函数原型声明中错误的是()

选项:

A、voidFun(intx=0,inty=0);

B、voidFun(intx,inty);

C、voidFun(intx,inty=0);

D、voidFun(intx=0,inty)

答案:【voidFun(intx=0,inty)】8.单选题:已知:intm=10;在下列定义引用的语句中,正确的是()

选项:

A、int&x=m;

B、inty=&m;

C、int&z;

D、int&t=&m;

答案:【int&x=m;】9.单选题:给出下面定义:chara[]="qwer";charb[]={'q','w','e','r'};则下面说法正确的是()

选项:

A、数组a和数组b等价

B、数组a和数组b的长度相同

C、数组a的长度大于数组b的长度

D、数组a的长度小于数组b的长度

答案:【数组a的长度大于数组b的长度】10.单选题:若有定义:"inta[10],*p;p=a;"则执行"p=p+5;"后,与*p不相等的是()

选项:

A、a[5]

B、*(a+5)

C、*(p+5)或p[5]

D、执行“a=a+5;”后的*a

答案:【执行“a=a+5;”后的*a】11.单选题:下列表达式,能将P声明为常量指针的是()

选项:

A、constint*P;

B、int*constP;

C、.const*constP

D、int*P

答案:【int*constP;】12.单选题:要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()

选项:

A、constchar*p=“ABCD”;

B、char*constp=“ABCD”;

C、charconst*p=“ABCD”;

D、constchar*constp=“ABCD”;

答案:【constchar*constp=“ABCD”;】13.单选题:下列程序的输出结果是()intmain(){chara[]="Hello,World";char*ptr=a;while(*ptr){if(*ptr>='a'&&*ptr<='z')cout<elsecout<<*ptr;ptr++;}return0;}

选项:

A、HELLO,WORLD

B、Hello,World

C、hELLO,wORLD

D、hello,world

答案:【HELLO,WORLD】14.单选题:下面程序的输出结果是()intmain(){intx[6]={1,3,5,7,9,11},*k,**s;k=x;s=&k;cout<<*(k++)<<","<<**s<return0;}

选项:

A、3,3

B、1,1

C、3,5

D、1,3

答案:【1,1】15.单选题:在下面的一维数组定义中,()语句有语法错误

选项:

A、inta[];

B、inta[]={1,2,3};

C、inta[10]={0};

D、inta[5];

答案:【inta[];】16.单选题:由C++源程序文件编译而成的目标文件的缺省扩展名为()

选项:

A、.cpp

B、.obj

C、.lik

D、.exe

答案:【.cpp】17.单选题:关于C++语言和C语言的关系的下列描述中,错误的是()

选项:

A、C语言和C++语言都是面向对象的语言

B、C语言是C++语言的一个子集

C、C++语言与C语言兼容

D、C++语言对C语言做了些改进

答案:【C语言和C++语言都是面向对象的语言】18.单选题:在inta=3,int*p=&a;中,*p的值是()

选项:

A、3

B、变量a的地址值

C、无意义

D、变量p的地址值

答案:【3】19.单选题:决定C++语言中函数的返回值类型的是()

选项:

A、在定义该函数时所指定的数据类型

B、return语句中的表达式类型

C、调用该函数时系统随机产生的类型

D、调用该函数时的主调用函数类型

答案:【在定义该函数时所指定的数据类型】20.单选题:C++语言中所有在函数中定义的变量,连同形式参数,都属于()

选项:

A、局部变量

B、全局变量

C、静态变量

D、函数

答案:【局部变量】第二部分过程化编程技术-函数应用第二单元函数应用单元测试1.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){intI,j,m=0,n=0;for(I=0;I<2;I++)for(j=0;j<2;j++)if(j>=I)m=1;n++;cout<<<<>cout<}

选项:

A、11

B、15

C、16

D、02

答案:【11】2.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){ints;for(intk=2;k<6;k+=2){s=1;for(intj=k;j<6;j++)s+=j;}cout<<<<>}

选项:

A、10

B、9

C、1

D、11

答案:【10】3.单选题:下列说法正确的是()

选项:

A、若“a=5.4,b=4”则执行“(int)(a/b,a++)”后a的值为6

B、运算符*的优先级要低于sizeof的优先级

C、已知“a=4,b=5,max=(++a

D、“a=1;b=5;--a&&b++;”执行后b的值为5

答案:【若“a=5.4,b=4”则执行“(int)(a/b,a++)”后a的值为6】4.单选题:下列字符常量的写法中,错误的是()

选项:

A、’\4f’

B、’\105'

C、’*’

D、’\a’

答案:【’\4f’】5.单选题:对象的封装就是()

选项:

A、可进可出,但是外界不能干涉内部的处理过程

B、与世隔绝

C、只进不出

D、封装只是抽象的封装,外界可以直接干预

答案:【可进可出,但是外界不能干涉内部的处理过程】6.单选题:对于函数put()的说法不正确的是()

选项:

A、它的功能是输出字符串并换行

B、其参数可以是字符常量

C、其参数可以是字符变量

D、将字符送入输出流

答案:【它的功能是输出字符串并换行】7.单选题:关于getline函数的说法不正确的是()

选项:

A、该函数是接收字符串的函数

B、该函数接收的字符串长度是受限的,可以人为设置所接收字符串的长度,它所接收的字符串长度是这一长度值减1

C、该函数遇到换行符或其他终止符后结束操作

D、该函数接收从键盘输入的字符串

答案:【该函数是接收字符串的函数】8.单选题:下面程序的输出结果是()#includeusingstd::cout;usingstd::endl;templatetmax(ta,tb){return(a>=b)?a:b;}intmain(){cout<<<<>cout<<br>选项:

A、8lisi

B、8zhangsan

C、5zhangsan

D、5lisi

答案:【8lisi】9.单选题:下列说法正确的是()

选项:

A、当字符串放在字符数组中,这时要求字符数组长度比字符串长1个单元,因为要放字符串终结符‘\0’

B、字符型数组与整型数组可通用

C、字符型数组与字符串其实没有什么区别

D、字符串的输出可以用它所存储的数组来输出,也可以字符串的形式整体输出,结果没区别

答案:【当字符串放在字符数组中,这时要求字符数组长度比字符串长1个单元,因为要放字符串终结符‘\0’】10.单选题:下列一维数组定义正确的是()

选项:

A、constintx=5;floatnum[x];

B、x=5;intnum[x];

C、constfloatx=5;intnum[x];

D、constintx;x=5;intnum[x];

答案:【constintx=5;floatnum[x];】11.单选题:关于普通变量的说法不正确的是()

选项:

A、语句“cin>>&a;”表示把某个数据存入变量a

B、普通变量的数据类型不同则所占内存的字节数量不同

C、普通变量在赋值函数“=”的左边、右边的含义不同,在左边表示要存储的数据的地址,在右边表示一个值

D、有如下定义“inta;”则&a代表变量a所代表数据在内存中的地址

答案:【语句“cin>>&a;”表示把某个数据存入变量a】12.单选题:下面说法错误的是()

选项:

A、数组初始化时,若给定元素个数少于数组元素,多余数组元素自动初始化为最后一个给定元素值

B、一个数组只允许存储同种类型的变量

C、数组名称其实是数组在内存中的首地址

D、当数组名作为参数被传递给某个函数时,原数组中元素的值可能被修改

答案:【数组初始化时,若给定元素个数少于数组元素,多余数组元素自动初始化为最后一个给定元素值】13.单选题:下面说法不正确的是()

选项:

A、数组名作形参时,形参改变不会影响实参值

B、数组元素作为函数参数属于值传递

C、数组名作为函数参数属于地址传递,形参、实参共用同一内存空间

D、数组元素作形参时,形参改变不会影响实参值

答案:【数组名作形参时,形参改变不会影响实参值】14.单选题:有定义“inta[2][5];”若a[0][1]的地址为x,则a[0][0]、a[1][3]地址分别为(假设一个整型数据占用两个字节的内存空间)()

选项:

A、x-2,x+14

B、x-1,x+7

C、x+1,x+7

D、x-1,x+14

答案:【x-2,x+14】15.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=10)break;if(b%3==1){b+=3;continue;}}cout<}

选项:

A、4

B、5

C、6

D、11

答案:【4】16.单选题:下列语句段将输出字符’*’的个数为()inti=100;while(1){i--;if(i==0)break;cout<<'*';}

选项:

A、99个

B、98个

C、101个

D、100个

答案:【99个】17.单选题:下列运算结果正确的是()

选项:

A、“y=x++;”可以写成“y=x;x=x+1;”,“y=++x;”可以写成“x=x+1;y=x;

B、“consty;intx=2;y=x++;”执行后值为3

C、“consty=2;intx=3;x++=y;”执行后,i的值为2

D、“intx,y;y=(x=5,x++,x+2);”执行后x值为8

答案:【“y=x++;”可以写成“y=x;x=x+1;”,“y=++x;”可以写成“x=x+1;y=x;】18.单选题:已知枚举类型定义语句为:enumToken{NAME,NUMBER,PLUS=5,MINUS,PRINT=10};则下列说法中错误的是()

选项:

A、枚举常量NAME的值为1

B、枚举常量NUMBER的值为1

C、枚举常量MINUS的值为6

D、枚举常量PRINT的值为10

答案:【枚举常量NAME的值为1】19.单选题:关于静态数据成员的说法正确的是()

选项:

A、静态数据成员是所有同类的对象共享数据,它不能具体地属于哪一个对象

B、静态数据成员虽然能实现同类的对象共享数据,但破坏了类的封装性

C、静态数据成员只在类中声明一次即可

D、若C为一个类,a为它的一个对象,s为类中的一个静态数据成员,则staticinta.s可以说明s为一个静态数据成员

答案:【静态数据成员是所有同类的对象共享数据,它不能具体地属于哪一个对象】20.单选题:关于内联函数的说法不正确的是()

选项:

A、当内联函数被调用时,内联函数将返回结果

B、在说明类的同时定义成员函数,则函数隐含为内联函数

C、也可在类外用inline关键字,对成员函数进行说明,则该函数也为内联函数

D、当内联函数被调用时,内联函数的代码在调用处被打开

答案:【当内联函数被调用时,内联函数将返回结果】21.单选题:以下说法中正确的是()

选项:

A、C++语言程序总是从main()函数开始执行

B、C++语言程序总从第一个的函数开始执行

C、在C++语言程序中,要调用的函数必须在main()函数中定义

D、C++语言程序中的main()函数必须放在程序的开始部分

答案:【C++语言程序总是从main()函数开始执行】22.单选题:下列关于函数的调用,不正确的是()

选项:

A、函数的调用可作为函数形参

B、如果一个问题的解决要依靠另一个问题的解决,而另一个问题的解决的方法与原问题相同,则此问题可用递归方法来解决

C、函数的调用可作为函数的实参

D、函数的调用可出现在执行语句中,也可出现在表达式中

答案:【函数的调用可作为函数形参】23.单选题:形参与实参的说法正确的是()

选项:

A、形参与实参的个数、类型、顺序都应一一对应

B、形参与实参的个数可以不必相同,少一个多一个,程序一样执行

C、形参与实参的类型可以不同,不影响运算结果

D、形参与实参的类型个数相同,而顺序不同,计算机可以自动进行匹配,所以形参的顺序无所谓,只要各种形参类型的数量与实参相同即可

答案:【形参与实参的个数、类型、顺序都应一一对应】24.单选题:函数软件就是在程序设计中,把功能相对独立、单一的模块用一个函数实现,再由若干个函数组成完整程序的设计方法。其中的函数叫做软件函数,关于软件函数下列说法不正确的是()

选项:

A、用全局变量能使每个文件中各个函数保持联系,使函数之间的沟通交往十分方便,因而可以多用全局变量,以加强函数之间的联系

B、软件函数结构独立,功能单一,便于编写和调试、修改,在结构化程序设计中相当重要

C、可以并行开发,加快软件开发速度,缩短开发周期

D、函数的重复使用性好,提高开发效率

答案:【用全局变量能使每个文件中各个函数保持联系,使函数之间的沟通交往十分方便,因而可以多用全局变量,以加强函数之间的联系】25.单选题:运行下列程序,输出结果是()#includeusingnamespacestd;voidfun(inti);intmain(){intn=2;fun(n);return0;}voidfun(inti){staticintx=1;inty=1;if(i>0){++x;++y;cout<<<''<<<'=""';<=""p=""><<'>fun(i-1);}}

选项:

A、2232

B、2222

C、2233

D、语法错,不能输出正确结果

答案:【2232】26.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){int*p,*q,i=8,j=9;p=&i;q=&j;cout<<*p;*q=i;cout<<*q;q=p;cout<<*q;p=q;cout<<*p;}

选项:

A、8888

B、8889

C、8989

D、8899

答案:【8888】27.单选题:C++是()

选项:

A、既是面向对象的程序设计语言又是结构化程序设计语言

B、面向对象的程序设计语言

C、结构化程序设计语言

D、非结构化程序设计语言

答案:【既是面向对象的程序设计语言又是结构化程序设计语言】28.单选题:下列C++标点符号中表示一条预处理命令开始的是()

选项:

A、#

B、;

C、//

D、}

答案:【#】29.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){inta=18;int*p=&a;cout<<(long)p;}

选项:

A、以十进制输出变量a的地址

B、以八进制输出变量a的地址

C、以十进制输出p的地址

D、以十六进制输出a的地址

答案:【以十进制输出变量a的地址】30.单选题:包含在iostream文件中,有缓冲区,用来处理标准出错信息的输出的是()

选项:

A、clog

B、cout<br>C、cerr

D、out

答案:【clog】第三部分封装与信息隐藏-类与对象第三单元类与对象单元测试1.单选题:下列程序无错的是()

选项:

A、intsum(inta,intb){intsum;sum=a+b;}

B、voidsum(inta,intb){intsum;sum=a+b;return(sum);}

C、#includeMax(inta,intb){intc;return(c=a>=b?a:b);}intmain(){cout<<br>D、floatfun(void){cout<<"Hello!Everyone";floatfun1()

答案:【#includeMax(inta,intb){intc;return(c=a>=b?a:b);}intmain(){cout<】2.单选题:要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是()

选项:

A、intx[3]={0,0,0};

B、intx[]={0};

C、Staticintx[3]={0};

D、intx[]={0,0,0);

答案:【intx[]={0};】3.单选题:在C++中,cin是一个()

选项:

A、类

B、对象

C、模板

D、函数

答案:【对象】4.单选题:若MyClass是一个类名,且有如下语句序列MyClassc1,*c2;MyClass*c3=newMyClass;MyClass&c4=c1;上面的语句序列所定义的类对象的个数是()

选项:

A、1

B、2

C、3

D、4

答案:【2】5.单选题:下列不能作为类的成员的是()

选项:

A、自身类对象

B、自身类对象的指针

C、自身类对象的引用

D、另一个类的对象

答案:【自身类对象】6.单选题:假设person是一个类,p、q是它的不同对象,有函数f(personx&),下列过程中没有调用拷贝构造函数的是()

选项:

A、p(10);

B、personp(q);

C、personp=q;

D、q=f(p);

答案:【p(10);】7.单选题:关于静态数据成员的说法正确的是()

选项:

A、静态数据成员是所有同类的对象共享数据,它不能具体地属于哪一个对象

B、静态数据成员虽然能实现同类的对象共享数据,但破坏了类的封装性

C、静态数据成员只在类中声明一次即可

D、若C为一个类,a为它的一个对象,s为类中的一个静态数据成员,则staticinta.s可以说明s为一个静态数据成员

答案:【静态数据成员是所有同类的对象共享数据,它不能具体地属于哪一个对象】8.单选题:关于构造函数的说法,正确的是()

选项:

A、构造函数的名字与类名相同,因此同类的不同对象的构造函数是相同的

B、构造函数用于代替类中的一个成员函数来在创建对象时给对象赋初值(通常是成员变量),它是由人工设计的,因此可以在任何时候,任何地方来调用它

C、构造函数的参数多少没有定制,它的返回值的类型为void

D、构造函数的名字与类名相同,因此一个类只有一个构造函数,即构造函数不可重载

答案:【构造函数的名字与类名相同,因此同类的不同对象的构造函数是相同的】9.单选题:拷贝构造函数具有的下列特点中,()是错误的

选项:

A、拷贝构造函数的名字不能用类名

B、如果一个类中没有定义拷贝构造函数时,系统将自动生成一个默认的

C、拷贝构造函数只有一个参数,并且是该类对象的引用

D、拷贝构造函数是一种成员函数

答案:【拷贝构造函数的名字不能用类名】10.单选题:下面程序的输出结果是()#includeusingnamespacestd;intfun3(intx){staticinta=12;a=x;return(a);}intmain(){intk=4,m=5,n;n=fun3(k);n=fun3(m);cout<<<<>

选项:

A、12

B、5

C、4

D、9

答案:【5】11.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){inta[3][5]={{1,3,5,7,9},{2,4,6,8,0},{5,6,7,8,9}};int(*p)[5];p=a;for(inti=0;i<3;i++){for(intj=0;j<5;j++)cout<<*(*p+j)<<"";cout<p++;}}

选项:

A、13592468056789

B、135792468056789

C、125

D、135

答案:【135792468056789】12.单选题:为避免指针使用上的错误,可以在定义指针时就给指针一个值,这叫指针的初始化,下列不能初始化指针的值是()

选项:

A、5

B、0

C、NULL

D、地址

答案:【5】13.单选题:下面程序的输出结果是()#includeusingnamespacestd;intmain(){inta[3][3]={{1,2},{3,4},{5}};ints=0;for(inti=1;i<3;i++)for(intj=0;j<=i;j++)s+=a[i][j];cout<<<<>}

选项:

A、12

B、14

C、15

D、13

答案:【12】14.单选题:关于类和对象的说法不正确的是()

选项:

A、类是对象的类,对象是类的对象

B、系统不为类分配内存空间,而为对象分配内存空间

C、如果把人看作动物,那么细菌也是动物

D、类可以看作数据类型,对象也可以叫做对象的实体、实例等

答案:【如果把人看作动物,那么细菌也是动物】15.单选题:若有定义:"inta[10],*p;p=a;"则执行"p=p+5;"后,与*p不相等的是()

选项:

A、a[5]

B、*(a+5)

C、*(p+5)或p[5]

D、执行“a=a+5;”后的*a

答案:【执行“a=a+5;”后的*a】16.单选题:下列关于this指针的叙述中,正确的是()

选项:

A、this指针是一个隐含指针,它隐含于类的成员函数中

B、只有在使用this时,系统才会将对象的地址赋值给this

C、类的友元函数也有this指针

D、this指针表示了成员函数当前操作的数据所属的对象

答案:【this指针表示了成员函数当前操作的数据所属的对象】17.单选题:关于动态存储分配,下列说法正确的是()

选项:

A、new和delete是C++语言中专门用于动态内存分配和释放的函数

B、动态分配的内存控件也可以被初始化

C、当系统内存不够时,会自动回收不再使用的内存单元,因此程序中不必要使用delete释放内存控件

D、当动态分配内存失败时,系统回立刻崩溃,因此一定要谨慎使用new

答案:【动态分配的内存控件也可以被初始化】18.单选题:以下不属于类成员函数的是()

选项:

A、友元函数

B、构造函数

C、析构函数

D、虚函数

答案:【友元函数】19.单选题:以下叙述中不正确的是()

选项:

A、构造函数和析构函数都可以带参数

B、构造函数和析构函数都是成员函数

C、程序中不能直接调用构造函数,但可以调用析构函数

D、构造函数可以重载但析构函数不可以

答案:【构造函数和析构函数都可以带参数】20.单选题:以下属于析构函数特征的是()

选项:

A、在一个类中析构函数有且仅有一个

B、析构函数名与类名不能相同

C、析构函数的定义必须在类体内

D、析构函数可以带或不带参数

答案:【在一个类中析构函数有且仅有一个】21.单选题:以下叙述中不正确的是()

选项:

A、构造函数和析构函数是特殊的成员函数,因此不允许重载

B、在类定义中,通常是用成员变量描述对象的属性;用成员函数描述对象的行为

C、类的一个成员只能具有一种访问控制属性

D、通过对象只能访问类的公有成员

答案:【构造函数和析构函数是特殊的成员函数,因此不允许重载】22.单选题:以下叙述中正确的是()

选项:

A、在类中(class),不作特别说明的数据成员均为私有类型

B、在类中,不作特别说明的数据成员均为公有类型

C、类成员的定义必须是成员变量在前、成员函数在后

D、类成员的定义必须放在类定义体内部

答案:【在类中(class),不作特别说明的数据成员均为私有类型】23.单选题:以下有关构造函数的叙述不正确的是()

选项:

A、在一个类中构造函数有且仅有一个

B、构造函数名必须和类名一致

C、构造函数在定义对象是自动执行

D、构造函数无任何函数类型

答案:【在一个类中构造函数有且仅有一个】24.单选题:类的实例化是指()

选项:

A、创建类的对象

B、定义类

C、指明具体类

D、调用类的成员

答案:【创建类的对象】25.单选题:数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体,这实体也就是()

选项:

A、对象

B、类

C、函数体

D、数据块

答案:【对象】26.单选题:设i,j为类X中定义的int型变量名,下列X类的构造方法中不正确的是()

选项:

A、voidX(intk){i=k;}

B、X(intk){i=k;}

C、X(intm,intn){i=m;j=n;}

D、X(){i=0;j=0;}

答案:【voidX(intk){i=k;}】27.单选题:设A为已定义的类名,下列声明A类的对象a的语句中正确的是()

选项:

A、staticAa=newA();

B、floatAa;

C、publicAa=A();

D、Aa=newint();

答案:【staticAa=newA();】28.单选题:类的析构函数的作用是()

选项:

A、删除对象

B、一般成员函数

C、类的初始化

D、对象初始化

答案:【删除对象】29.单选题:()是析构函数的特征

选项:

A、一个类中只能定义一个析构函数

B、析构函数名与类名不同

C、析构函数的定义只能在类体内

D、析构函数可以有一个或多个参数

答案:【一个类中只能定义一个析构函数】30.单选题:下列说法中正确的是()

选项:

A、类中的函数成员可以在类体中定义,也可以在类体之外定义

B、类定义中只能说明函数成员的函数头,不能定义函数体

C、类中的函数成员在类体之外定义时必须要与类声明在同一文件中

D、在类体之外定义的函数成员不能操作该类的私有数据成员

答案:【类中的函数成员可以在类体中定义,也可以在类体之外定义】31.单选题:以下关于静态成员函数的叙述不正确的是()

选项:

A、使用类名可以直接调用其静态成员函数

B、静态成员函数属于整个类

C、对静态成员函数的引用允许使用对象名

D、在静态成员函数中不能直接引用类的非静态成员

答案:【使用类名可以直接调用其静态成员函数】32.单选题:关于面向对象的程序设计方法,下列说法正确的是()

选项:

A、在面向对象的程序设计中,结构化程序设计方法仍有着重要作用

B、“封装性”指的是将不同类型的相关数据组合在一起,作为一个整体进行处理

C、“多态性”指的是对象的状态会根据运行时要求自动变化

D、基类的私有成员在派生类的对象中不可访问,也不占内存空间

答案:【在面向对象的程序设计中,结构化程序设计方法仍有着重要作用】33.单选题:以下有关成员函数特征的叙述不正确的是()

选项:

A、成员函数一定是内联函数

B、成员函数可以重载

C、成员函数可以设置缺省数值

D、成员函数可以是静态的

答案:【成员函数一定是内联函数】第四部分面向对象编程技术-继承与派生第四单元继承与派生单元测试1.单选题:下列描述中,错误的是()

选项:

A、公有继承时基类中的公有成员在派生类中仍是公有成员

B、公有继承时基类中的保护成员在派生类中仍是保护成员

C、保护继承时基类中的公有成员在派生类中仍是公有成员

D、保护继承时基类中的保护成员在派生类中仍是保护成员

答案:【保护继承时基类中的公有成员在派生类中仍是公有成员】2.单选题:面向对象方法中,继承是指()

选项:

A、一组对象所具有的相似性质

B、一个对象具有另一个对象的性质

C、各对象之间的共同性质

D、类之间共享属性和操作的机制

答案:【类之间共享属性和操作的机制】3.单选题:下列代码段声明了3个类classPerson{};classStudent:publicPerson{};classUndergraduate:Student{};下列关于这些类之间关系的描述中,错误的是()

选项:

A、类Person是类Undergraduate的基类

B、类Undergraduate从类Student公有继承

C、类Student是类Person的派生类

D、类Undergraduate是类Person的派生类

答案:【类Undergraduate从类Student公有继承】4.单选题:下列关于继承方式的描述中,错误的是()

选项:

A、如果不显式地指定继承方式,缺省的继承方式是私有(private)

B、采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员

C、采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员

D、采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员

答案:【采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员】5.单选题:定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为()

选项:

A、私有继承

B、非私有继承

C、保护继承

D、公有继承

答案:【私有继承】6.单选题:对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是()

选项:

A、公有或私有

B、私有

C、保护或私有

D、公有或保护

答案:【公有或保护】7.单选题:下列关键字中,不能用来表示继承方式的是()

选项:

A、private

B、static

C、public

D、protected

答案:【static】8.单选题:如果派生类以protected方式继承基类,则原基类的protected成员和public成员在派生类中的访问属性分别是()

选项:

A、public和public

B、public和protected

C、protected和public

D、protected和protected

答案:【protected和protected】9.单选题:下面对派生类的描述中,错误的是()

选项:

A、派生类至少有一个基类

B、一个派生类可以作为另外一个派生类的基类

C、派生类的成员除了它自己的成员外,还包含了它的基类的成员

D、派生类中继承的基类成员的访问权限到派生类中保持不变

答案:【派生类中继承的基类成员的访问权限到派生类中保持不变】10.单选题:在一个派生类的成员函数中,试图调用其基类的成员函数“voidf();”,但无法通过编译。这说明()

选项:

A、f()是基类的私有成员

B、f()是基类的保护成员

C、派生类的继承方式为私有

D、派生类的继承方式为保护

答案:【f()是基类的私有成员】11.单选题:关于继承和封装说法正确的是()

选项:

A、封装就是完全封闭,外部只能通过实现接口互连

B、继承是封装的基础

C、封装是继承的基础

D、子类可只继承父类的部分可继承行为和属性,也可全部继承,就像儿子可继承父亲的部分性格一样

答案:【封装是继承的基础】12.单选题:继承是C++面向对象程序设计的重要特性之一,下列继承的说法不正确的是()

选项:

A、子类与子类间可共享父类的特性

B、子类与子类间、子类与父类间存在着细微差别

C、子类与子类间、子类与父类间存在着很大差别

D、子类与父类间存在着明显的层次关系

答案:【子类与子类间、子类与父类间存在着很大差别】13.单选题:一个类可以同时继承多个类,称为多继承。下列关于多继承和虚基类的表述中,错误的是()

选项:

A、每个派生类的构造函数都要为虚基类构造函数提供实参

B、多继承时有可能出现对基类成员访问的二义性问题

C、使用虚基类可以解决二义性问题并实现运行时的多态性

D、建立派生类对象时,虚基类的构造函数会首先被调用

答案:【使用虚基类可以解决二义性问题并实现运行时的多态性】14.单选题:下列关键字中,用来表示继承方式的是()

选项:

A、virtual

B、static

C、protected

D、const

答案:【protected】15.单选题:下列有关派生和继承的表述中,错误的是()

选项:

A、若派生类没有实现基类中的一个纯虚函数,则该派生类是抽象类

B、在定义派生类时,可以用关键字virtual将某个基类指定为虚基类

C、在生成派生类对象时,派生类构造函数要调用基类的构造函数

D、派生类中定义的成员函数可以访问基类的所有成员

答案:【派生类中定义的成员函数可以访问基类的所有成员】16.单选题:当派生类继承一个基类时,默认的继承方式为()

选项:

A、public

B、protected

C、private

D、不确定

答案:【private】17.单选题:继承是C++面向对象程序设计的重要特性之一,下列继承的说法不正确的是()

选项:

A、子类与子类间可共享父类的特性

B、子类与子类间、子类与父类间存在着细微差别

C、子类与子类间、子类与父类间存在着很大差别

D、子类与父类间存在着明显的层次关系

答案:【子类与子类间、子类与父类间存在着很大差别】18.单选题:关于继承的目的和作用,说法不正确的是()

选项:

A、继承是为了重复利用父类的可用代码,避免重复劳动

B、继承可以增加自己的父类不能实现的功能的代码,使子类的功能更完善,提高程序设计效率

C、子类可以继承父类的函数和数据,以便重复使用

D、子类可以继承父类的所用特性,以便重复使用,这才是继承的目的

答案:【子类可以继承父类的所用特性,以便重复使用,这才是继承的目的】19.单选题:可以用p.a的形式访问派生类对象p的基类成员a,其中a是()

选项:

A、私有继承的公有成员

B、公有继承的私有成员

C、公有继承的保护成员

D、公有继承的公有成员

答案:【公有继承的公有成员】20.单选题:关于下列程序说法正确的是()#include#include#includeusingnamespacestd;classA{public:A(constchar*na){strcpy(name,na);}private:charname[80];};classB:publicA{public:B(constchar*nm):A(nm){}voidshow();};voidB::show(){cout<<"name:"<<<<br>选项:

A、能正常执行

B、不能正常执行只能将第九行private:改为public:才能正常运行

C、不能正常执行只能将第九行private:改为protected:才能正常运行

D、不能正常执行B,C两项都行

答案:【不能正常执行B,C两项都行】21.单选题:以下有关继承的叙述正确的是()

选项:

A、构造函数和析构函数都能被继承

B、派生类是基类的组合

C、派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员

D、基类的公有成员一定能被派生类的对象访问

答案:【派生类对象除了能访问自己的成员以外,不能访问基类中的所有成员】22.单选题:下列不具有访问权限属性的是()

选项:

A、非类成员

B、类成员

C、数据成员

D、函数成员

答案:【非类成员】23.单选题:继承机制的作用是()

选项:

A、信息隐藏

B、数据封装

C、定义新类

D、数据抽象

答案:【定义新类】24.单选题:如果一个派生类只有一个直接的基类,则这样的继承关系称为()

选项:

A、单继承

B、多继承

C、类延续

D、类族

答案:【单继承】25.单选题:下列有关继承和派生的叙述中,正确的是()

选项:

A、派生类不能访问基类的保护成员

B、作为虚基类的类不能被实例化

C、派生类应当向基类的构造函数传递参数

D、虚函数必须在派生类中重新实现

答案:【派生类应当向基类的构造函数传递参数】26.单选题:在公有继承的情况下,允许派生类直接访问的基类成员包括()

选项:

A、公有成员

B、公有成员和保护成员

C、公有成员、保护成员和私有成员

D、保护成员

答案:【公有成员和保护成员】27.单选题:下列有关继承和派生的叙述中,正确的是()

选项:

A、如果一个派生类私有继承其基类,则该派生类对象不能访问基类的保护成员

B、派生类的成员函数可以访问基类的所有成员

C、基类对象可以赋值给派生类对象

D、如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类

答案:【如果派生类没有实现基类的一个纯虚函数,则该派生类是一个抽象类】28.单选题:下列说法中错误的是()

选项:

A、公有继承时基类中的public成员在派生类中仍是public成员

B、私有继承时基类中的protected成员在派生类中仍是protected成员

C、私有继承时基类中的public成员在派生类中是private成员

D、保护继承时基类中的public成员在派生类中是protected成员

答案:【私有继承时基类中的protected成员在派生类中仍是protected成员】29.单选题:下面的继承的说法正确的是()classmath{...};classmath1:math{...};

选项:

A、math类、math1类没有继承关系

B、math1类是math类的父类

C、math1类对math类继承是公有继承

D、math1类对math类的继承是私有继承

答案:【math1类对math类的继承是私有继承】30.单选题:关于多继承二义性的描述中,错误的是()

选项:

A、一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性

B、解决二义性的最常用的方法是对成员名的限定法

C、基类和派生类中同时出现的同名函数,也存在二义性问题

D、一个派生类是从两个基类派生出来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,可能出现二义性

答案:【基类和派生类中同时出现的同名函数,也存在二义性问题】31.单选题:关于公有继承的有关对象的说法正确的是()

选项:

A、基类成员对基类的对象都是可见的

B、子类成员对子类的对象是可见的,基类成员对子类的对象也都是可见的

C、基类成员中的公有成员对子类的对象是可见的

D、基类成员对子类是可见的

答案:【基类成员对子类是可见的】32.单选题:关于虚基类的说法不正确的是()

选项:

A、引进虚基类的真正目的是解决二义性问题

B、若某个类被说明为虚类,则被重复继承的该类在派生类对象实例中只产生一个副本

C、在派生类的对象被创建时,要保证虚基类的构造函数被调用一次

D、因为虚基类可被多个派生类继承,因此可以有多个副本,以适应不同的子类

答案:【因为虚基类可被多个派生类继承,因此可以有多个副本,以适应不同的子类】33.单选题:C++语言建立类族是通过()

选项:

A、类的嵌套

B、类的继承

C、虚函数

D、抽象类

答案:【类的继承】34.单选题:下列有关模板和继承的叙述正确的是()

选项:

A、模板和继承都可以派生出一个类系

B、从类系的成员看,模板类系的成员比继承类系的成员较为稳定

C、从动态性能看,继承类系比模板类系具有更多的动态特性

D、相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系

答案:【相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系】35.单选题:在私有继承的情况下,基类成员在派生类中的访问权限()

选项:

A、受限制

B、保持不变

C、受保护

D、不受保护

答案:【受限制】36.单选题:在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()

选项:

A、受限制

B、保持不变

C、受保护

D、不受保护

答案:【保持不变】37.单选题:在公有派生类的成员函数不能直接访问基类中继承来的某个成员,则该成员一定是基类中的()

选项:

A、私有成员

B、公有成员

C、保护成员

D、保护成员或私有成员

答案:【私有成员】38.单选题:下面叙述不正确的是()

选项:

A、派生类一般都用公有派生

B、对基类成员的访问必须是无二义性的

C、赋值兼容规则也适用于多重继承的组合

D、基类的公有成员在派生类中仍然是公有的

答案:【基类的公有成员在派生类中仍然是公有的】39.单选题:派生类的对象可以访问以下那种情况继承的基类成员()

选项:

A、私有继承的私有成员

B、公有继承的私有成员

C、私有继承的保护成员

D、公有继承的公有成员

答案:【公有继承的公有成员】40.单选题:只能在自身类和子类成员函数中被访问,无法通过对象在类外访问的成员属于()

选项:

A、private

B、protected

C、public

D、publish

答案:【protected】41.单选题:在main函数中可以用p.a的形式访问派生类对象p的基类成员a,其中a是()

选项:

A、私有继承的公有成员

B、公有继承的私有成员

C、公有继承的保护成员

D、公有继承的公有成员

答案:【公有继承的公有成员】42.单选题:对基类和派生类的关系描述中,错误的是()

选项:

A、派生类是基类的具体化

B、基类继承了派生类的属性

C、派生类是基类定义的延续

D、派生类是基类的特殊化

答案:【基类继承了派生类的属性】43.单选题:C++的继承性允许派生类继承基类的()

选项:

A、部分特性,并允许增加新的特性或重定义基类的特性

B、部分特性,但不允许增加新的特性或重定义基类的特性

C、所有特性,并允许增加新的特性或重定义基类的特性

D、所有特性,但不允许增加新的特性或重定义基类的特性

答案:【所有特性,并允许增加新的特性或重定义基类的特性】44.单选题:在C++中类之间的继承关系具有()

选项:

A、自反性

B、对称性

C、传递性

D、反对称性

答案:【传递性】45.单选题:下列虚基类的声明中,正确的是()

选项:

A、classvirtualB:publicA

B、classB:virtualpublicA

C、classB:publicAvirtual

D、virtualclassB:publicA

答案:【classB:virtualpublicA】46.单选题:派生类的构造函数的成员初始化列表中,不能包含()

选项:

A、基类的构造函数

B、派生类中子对象的初始化

C、基类中子对象的初始化

D、派生类中一般数据成员的初始化

答案:【基类中子对象的初始化】47.单选题:C++类体系中,不能被派生类继承的有()

选项:

A、常成员函数

B、构造函数

C、虚函数

D、静态成员函数

答案:【构造函数】48.单选题:利用继承派生关系中的重构手段获得的新系统是为了()

选项:

A、仅仅延长该系统的寿命

B、修正原系统内的缺陷

C、允许多个不同版本的功能可以同时使用

D、掩盖原系统内的缺陷

答案:【允许多个不同版本的功能可以同时使用】49.单选题:假设ClassY:publicX,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为()

选项:

A、X,Y;Y,X

B、X,Y;X,Y

C、Y,X;X,Y

D、Y,X;Y,X

答案:【X,Y;Y,X】50.单选题:有如下程序:#includeusingnamespacestd;classBase{private:voidfun1()const{cout<<”fun1”;}protected:voidfun2()const{cout<<”fun2”;}public:voidfun3()const{cout<<”fun3”;}};classDerived:protectedBase{public:voidfun4()const{cout<<”fun4”;}};intmain(){Derivedobj;obj.fun1();//①obj.fun2();//②obj.fun3();//③obj.fun4();//④}其中没有语法错误的语句是()

选项:

A、①

B、②

C、③

D、④

答案:【④】51.单选题:有如下类定义:classXA{intx;public:XA(intn){x=n;}};classXB:publicXA{inty;public:XB(inta,intb);};在构造函数XB的下列定义中,正确的是()

选项:

A、XB::XB(inta,intb):x(a),y(b){}

B、XB::XB(inta,intb):XA(a),y(b){}

C、XB::XB(inta,intb):x(a),XB(b){}

D、XB::XB(inta,intb):XA(a),XB(b){}

答案:【XB::XB(inta,intb):XA(a),y(b){}】52.单选题:类O定义了私有函数F1。P和Q为O的派生类,定义为classP:protectedO{…};classQ:publicO{…}。()可以访问Fl。

选项:

A、O的对象

B、P类内

C、O类内

D、Q类内

答案:【O类内】53.单选题:程序如下:#includeusingnamespacestd;classA{public:A(){cout<<”A”;}};classB{public:B(){cout<<”B”;}};classC:publicA{Bb;public:C(){cout<<”C”;}};intmain(){Cobj;return0;}执行后的输出结果是()

选项:

A、CBA

B、BAC

C、ACB

D、ABC

答案:【ABC】54.单选题:有如下类定义:classMyBASE{intk;public:voidset(intn){k=n;}intget()const{returnk;}};classMyDERIVED:protectedMyBASE{protected;intj;public:voidset(intm,intn){MyBASE::set(m);j=n;}intget()const{returnMyBASE::get()+j;}};则类MyDERIVED中保护成员个数是()

选项:

A、4

B、3

C、2

D、1

答案:【3】55.单选题:在公有派生情况下,有关派生类对象和基类对象的关系,不正确的叙述是()

选项:

A、派生类的对象可以赋给基类的对象

B、派生类的对象可以初始化基类的引用

C、派生类的对象可以直接访问基类中的成员

D、派生类的对象的地址可以赋给指向基类的指针

答案:【派生类的对象可以直接访问基类中的成员】56.单选题:设置虚基类的目的是()

选项:

A、简化程序

B、消除二义性

C、提高运行效率

D、减少目标代码

答案:【消除二义性】57.单选题:当保护继承时,基类的()在派生类中成为保护成员,不能通过派生类的对象来直接访问。

选项:

A、任何成员

B、公有成员和保护成员

C、公有成员和私有成员

D、私有成员

答案:【公有成员和保护成员】58.单选题:下面叙述错误的是()

选项:

A、派生类可以使用private派生

B、对基类成员的访问必须是无二义性的

C、基类成员的访问能力在派生类中维持不变

D、赋值兼容规则也适用于多继承的组合

答案:【基类成员的访问能力在派生类中维持不变】59.单选题:下列说法中错误的是()

选项:

A、保护继承时基类中的public成员在派生类中仍是public的

B、公有继承时基类中的private成员在派生类中仍是private的

C、私有继承时基类中的public成员在派生类中是private的

D、保护继承时基类中的public成员在派生类中是protected的

答案:【公有继承时基类中的private成员在派生类中仍是private的】60.单选题:下面叙述错误的是()

选项:

A、基类的protected成员在派生类中仍然是protected的

B、基类的protected成员在public派生类中仍然是protected的

C、基类的protected成员在private派生类中是private的

D、基类的protected成员不能被派生类的对象访问

答案:【基类的protected成员在public派生类中仍然是protected的】61.单选题:当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的()

选项:

A、public成员

B、private成员

C、protected成员

D、友元

答案:【protected成员】62.单选题:在哪种派生方式中,派生类可以访问基类中的protected成员()

选项:

A、public和private

B、public、protected和private

C、protected和private

D、仅protected

答案:【public、protected和private】63.单选题:按解释中的要求在下列程序划线处填入的正确语句是()#includeclassBase{public:voidfun(){cout<<"Base::fun"<<br>选项:

A、fun();

B、Base.fun();

C、Base::fun();

D、Base->fun();

答案:【Base::fun();】64.单选题:在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限()

选项:

A、受限制

B、保持不变

C、受保护

D、不受保护

答案:【保持不变】65.单选题:在C++中,类与类之间的继承关系具有()

选项:

A、自反性

B、对称性

C、传递性

D、反对称性

答案:【传递性】第五部分面向对象编程技术-多态性第五单元多态性单元测试1.单选题:类B是类A的公有派生类,类A和类B中都定义了虚函数func(),p是一个指向类A对象的指针,则p->A::func()将()。

选项:

A、调用类A中的函数func()

B、调用类B中的函数func()

C、根据p所指的对象类型而确定调用类A中或类B中的函数func()

D、既调用类A中函数,也调用类B中的函数

答案:【调用类A中的函数func()】2.单选题:有如下程序:#includeusingnamespacestd;classPair{intm;intn;public:Pair(inti,intj):m(i),n(j){}booloperator>(Pairp)const;//须在类体外给出定义};intmain(){Pairp1(3,4),p2(4,3),p3(4,5);cout<<(p1>p2)<<(p2>p1)<<(p2>p3)<<(p3>p2);return0;}运算符函数operator>的功能是比较两个pair对象的大小,当左边对象大时,返回true,否则返回false。比较规则是首先比较两对象的m成员,m大者为大;当m相等时比较n,n大者为大。程序输出0101,下列对运算符重载函数的正确定义是()。

选项:

A、boolPair::Operator>(Pairp)const{if(m!=p.m)returnm>p.m;returnn>p.n;}

B、boolpair::operator>(Pairp){if(m!=p.m)returnm>p.m;returnn>p.n;}

C、boolPair::operator>(Pairp)const{if(m>p.m)returntrue;returnn>p.n;}

D、boolPair::operator>(Pairp){if(m>p.m)returntrue;returnn>p.n;}

答案:【boolPair::Operator>(Pairp)const{if(m!=p.m)returnm>p.m;returnn>p.n;}】3.单选题:下列关于运算符重载的描述中,正确的是()。

选项:

A、运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符

B、一元运算符只能作为成员函数重载

C、二元运算符重载为非成员函数时,参数表中有一个参数

D、C++中可以重载所有的运算符

答案:【运算符重载为成员函数时,若参数表中无参数,重载的是一元运算符】4.单选题:如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。#includeusingnamespacestd;classBase{inta,b;public:Base(intx,inty){a=x;b=y;}voidshow(){cout<<<','<<<<','<<<>};classDerived:publicBase{intc,d;public:Derived(intx,inty,intz,intm):Base(x,y){c=z;d=m;}voidshow(){cout<<<','<<<<','<<<>};intmain(){BaseB1(50,50),*pb;DerivedD1(10,20,30,40);pb=&D1;pb->show();return0;}运行时输出的结果是()。

选项:

A、10,20

B、30,40

C、20,30

D、50,50

答案:【10,20】5.单选题:多态调用是指()。

选项:

A、以任何方式调用一个虚函数

B、以任何方式调用一个纯虚函数

C、借助于指向对象的基类指针或引用调用一个虚函数

D、借助于指向对象的基类指针或引用调用一个纯虚函数

答案:【借助于指向对象的基类指针或引用调用一个虚函数】6.单选题:在C++中用来实现运行时多态性的是()。

选项:

A、重载函数

B、析构函数

C、构造函数

D、虚函数

答案:【虚函数】7.单选题:关于抽象类,下列表述正确的是()。

选项:

A、抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)

B、派生类必须实现作为基类的抽象类中的纯虚函数

C、派生类不可能成为抽象类

D、抽象类不能用来定义对象

答案:【抽象类不能用来定义对象】8.单选题:下面程序中对一维坐标点类Point进行运算符重载#includeusingnamespacestd;classPoint{public:Point(intval){x=val;}Point&operator++(){x++;return*this;}Pointoperator++(int){Pointold=*this;++(*this);returnold;}intGetX()const{returnx;}private:intx;};intmain(){Pointa(10);cout<<(++a).GetX();cout<return0;}编译和运行情况是()。

选项:

A、运行时输出1011

B、运行时输出1111

C、运行时输出1112

D、编译有错

答案:【运行时输出1111】9.单选题:下列关于运算符重载的描述中,正确的是()。

选项:

A、运算符重载可以改变操作数的个数

B、运算符重载可以改变运算符的优先级

C、运算符重载可以改变运算符的结合性

D、运算符重载可以使运算符实现特殊功能

答案:【运算符重载可以使运算符实现特殊功能】10.单选题:下列关于虚函数的描述中,正确的是()。

选项:

A、虚函数是一个static类型的成员函数

B、虚函数是一个非成员函数

C、基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

D、派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型

答案:【基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明】11.单选题:关于虚函数,下列表述正确的是()。

选项:

A、如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数

B、虚函数不得声明为静态函数

C、虚函数不得声明为另一个类的友元函数

D、派生类必须重新定义基类的虚函数

答案:【虚函数不得声明为静态函数】12.单选题:在一个类体的下列声明中,正确的纯虚函数声明是()。

选项:

A、virtualvoidvf()=0;

B、voidvf(int)=0;

C、virtualintvf(int);

D、virtualvoidvf(int){}

答案:【virtualvoidvf()=0;】13.单选题:对于类定义classA{public:virtualvoidfunc1(){}voidfunc2(){}};classB:publicA{public:voidfunc1(){cout<<″classBfunc1″<virtualvoidfunc2(){cout<<″classBfunc2″<};下面正确的叙述是()。

选项:

A、A::func2()和B::func1()都是虚函数

B、A::func2()和B::func1()都不是虚函数

C、B::func1()是虚函数,而A::func2()不是虚函数

D、B::func1()不是虚函数,而A::func2()是虚函数

答案:【B::func1()是虚函数,而A::func2()不是虚函数】14.单选题:下列有关运算符重载的叙述中,正确的是()。

选项:

A、运算符重载是多态性的一种表现

B、C++中可以通过运算符重载创造新的运算符

C、C++中所有运算符都可以作为非成员函数重载

D、重载运算符时可以改变其结合性

答案:【运算符重载是多态性的一种表现】15.单选题:虚函数支持多态调用,一个基类的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。有如下程序:#includeusingnamespacestd;classBase{public:virtualvoidf(){cout<<"f0+";}voidg(){cout<<"g0+";}};classDerived:publicBase{public:voidf(){cout<<"f+";}voidg(){cout<<"g+";}};intmain(){Derivedd;Base*p=&d;p->f();p->g();return0;}运行时输出的结果是()。

选项:

A、f+g+

B、f0+g+

C、f+g0+

D、f0+g0+

答案:【f+g0+】第六部分进阶编程技术-模板、文件流与异常处理第六单元进阶编程技术单元测试1.单选题:关于异常对象的生命周期,下列说法正确的是:

选项:

A、A.异常对象在throw处创建,在catch处理完后销毁

B、B.异常对象在try块开始时创建

C、C.异常对象通过值传递时会触发拷贝构造函数

D、D.异常对象必须动态分配,否则会在栈展开时被销毁

答案:【C.异常对象通过值传递时会触发拷贝构造函数】2.单选题:下列关于文件随机访问的描述,正确的是:

选项:

A、A.文本文件支持seekg()和seekp()进行随机访问

B、B.seekg(0,ios::end)将读指针移动到文件开头

C、C.tellg()返回当前读指针的位置(字节偏移量)

D、D.二进制文件不支持随机访问,只能顺序读写

答案:【C.tellg()返回当前读指针的位置(字节偏移量)】3.单选题:关于STL容器的迭代器失效问题,下列说法正确的是:

选项:

A、A.vector的push_back()操作永远不会导致迭代器失效

B、B.list的插入操作不会导致任何迭代器失效

C、C.vector的erase()操作只会使被删除元素的迭代器失效

D、D.deque的头部插入会使所有迭代器失效

答案:【B.list的插入操作不会导致任何迭代器失效】4.单选题:关于文件的打开模式组合,下列哪组是无效的?

选项:

A、A.ios::in|ios::out

B、B.ios::out|ios::app

C、C.ios::in|ios::trunc

D、D.ios::app|ios::trunc

答案:【D.ios::app|ios::trunc】5.单选题:关于函数模板重载与普通过载的优先级,正确顺序是

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论