《C++练习题.pdf》由会员分享,可在线阅读,更多相关《C++练习题.pdf(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、面 向 对 象 程 序 设 计 综 合 练 习 题一.单项选择题1.C+源程序文件的缺省扩展名为()。A.cpp B.exe C.obj D.lik2.由C+源程序文件编译而成的目标文件的缺省扩展名为()oA.cpp B.exe C.obj D.lik3.由C+目标文件连接而成的可执行文件的缺省扩展名为()oA.cpp B.exe C.obj D.lik4.编写C+程序一般需经过的几个步骤依次是()。A.编译、编辑、连接、调试 B.编辑、编译、连接、调试C.编译、调试、编辑、连接 D.编辑、调试、编辑、连接5.以下标识符中不全是保留字的是()oA.case for int B.default
2、then whileC.bool class long D.goto return char6.能作为C+程序的基本单位是()。A.字符 B.语句 C.函数 D.源程序文件7.程序中主函数的名字为()oA.main B.MAIN C.Main D.任意标识符8.C+程序的基本模块为()。A.表达式 B.标识符 C.语句 D.函数9.可用作C+语言用户标识符的一组标识符是()。A.0 B.O C.“0 D.0.0A.voiddefine+W0RDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof1 0.存储以下数据,占用存储字节最多的是()11.程序运行中需要从键盘上输
3、入多于一个数据时,各数据之间应使用()符号作为分隔符。A.空格或逗号 B.逗号或回车 C.逗号或分号 D.空格或回车12.设“int a=12;”,则执行完语句 a+=a*a;后,a的值是()。A.12 B.144 C.156 D.28813.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式的表达式是()。A.1.0/a*b*c B.1/(a*b*c)C.1/a/b/(float)c D.1.0/a/b/c1 4.设“int a=15,b=2 6;,则coutvv(a,b);”的输出结果是()。A.15 B.26,15C.15,26 D.2615.设x是一个boo
4、l型的逻辑量,y的值为1 0,则表达式x&y的 值 为()。A.1 B.0C.与x值相同 D.与x值相反16.x0&x=10的相反表达式为()。A.x 1 0C.x=0|x=1 0B.x 1 0D.x 0&x 1 017.x0|y=5的相反表达式为()oA.x=0 1 1 y!=5 B.x 0 1 1 y!=5 D.x 0&y=518.设x和y均为bool量,则x&y为真的条件是()。A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假19.设x和y均为bool量,则x 1 1 y为假的条件是()。A.它们均为真 B.其中一个为真C.它们均为假 D.其中一个为假20.字符串 a+b
5、=12 n”的长度为()。A.6 B.7C.8 D.92 1.假定下列x和y均为in t型变量,则不正确的赋值为()。A.x+=y+B.x+=y+C.x=+y D.+x=+y2 2.下列的符号常量定义中,错误的定义是()。A.const M=10;B.const int M=20;C.const char ch;D.const bool mark=true;2 3.循环语句“for(int i=0;ivn;i+)c o u tv v i*iv v ;中循环体执行的次数为()。A.1B.n-1C.n D.n+12 4.在下面循环语句中循环体执行的次数为()。for(int i=0;in/2)br
6、eak;A.n/2 B.n/2+1C.n/2-1 D.n-12 5.在下面循环语句中内层循环体S语句的执行总次数为()ofor(int i=0;i n;i+)for(int j=i;j n;j+)S;A.n2 B.(n+1)/2C.n(n-1)/2 D.n(n+1)/22 6.在下面循环语句中循环体执行的次数为()。int i=0,s=0;while(s20)i+;s+=i;A.4 B.5C.6 D.72 7.在下面循环语句中循环体执行的次数为()。int i=0;do i+;while(i*i 10);A.4 B.3C.5 D.22 8.当处理特定问题时的循环次数已知时,通常采用()来解决。
7、A.for循环 B.while循环C.do循环 D.switch语句2 9.循环体至少被执行一次的语句为()。A.fo r循环 B.while循环C.do循环 D.任一种循环30.switch语句能够改写为()语句。A.for B.ifC.do D.while31.do语句能够改写为()语句。A.复合 B.ifC.switch D.while3 2.在 下面的一维数组定义中,哪一个有语法错误。()A.int a=1,2,3;B.int a10=0;C.int a;D.int a5;33.在下面的字符数组定义中,哪一个有语法错误。(A.char a20=abcdefg”;B.char a=w x
8、+y=55.”;C.char a 15;D.char a10=0 )p+;return(p-s);)在主函数中用coutf(good”)调用上述函数,则输出结果为()。A.3B.46C.54 9.以下正确的函数原型语句是(A.double fun(int x,int y)C.double fun(intjnt);5 0.以下正确的说法是()。A.B.C.D.D.)。B.D.用户调用标准库函数前,必须重新定义用户可以重新定义标准库函数,若如此,系统不允许用户重新定义标准库函数用户调用标准库函数前,double fun(int x;int y)double fun(int x,y);该函数将失去原
9、有含义不必使用预编译命令将该函数所在文件包括到用户源文件中5 1.函数调用不可以(A.出现在一个表达式中C.作为一个函数的实参5 2.以下正确的描述是(A.函数的定义可以嵌套,B.出现在执行语句中D.作为一个函数的形参)o函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C.函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套53.若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址 B.数组中第一个元素的值C.数组全部元素的值 D.数组元素的个数54.以下错误的描述是()。A.被调用函数中可以不用return语句B.被调用函数中可以用多个retu
10、rn语句C.被调用函数中,如果有返回值,就定要有return语句D.被调用函数中,一 个return语句可返回多个值给调用函数55.以下正确的描述是()oA.不允许设置参数的默认值B.设置参数的默认值只能在定义函数时设置C.设置参数的默认值时,应该设置右边的参数D.设置参数的默认值时,应该全部参数都设置56.采用重载函数的目的是()。A.实现共享 B.减少空间C.提高速度 D.使用方便,提高可读性57.将两个字符串连接起来组成一个字符串时:选 用()函数。A.strlen()B.strcap()C.strcat()D.strcmp()5 8.以下叙述中正确的是()。A.使用#define可以为
11、常量定义一个名字,该名字在程序中可以再赋另外的值B.使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C.在程序中使用内联函数使程序的可读性变差D.在定义函数时可以在形参表的任何位置给出缺省形参值5 9.下面的标识符中,()是文件级作用域。A.函数形参C.外部静态类标识符6 0.以下叙述不正确的是()。A.宏替换不占用运行时间C.宏替换只是字符替换B.语句标号D.自动类标识符B.宏名无类型D.宏名必须用大写字母表示61.C+语言的编译系统对宏命令的处理是()。A.在程序运行时进行B.在程序连接时进行C.和C+程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行62
12、.当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是()。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录63.当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是()。A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录64.在下面存储类中,()对象的可见性与生存期不一致。A.外部类 B.自动类C.内部静态类 D.寄存器类65.在下面存储类中,()的对象不是
13、局部变量。A.外部静态类 B.自动类C.函数形参 D.寄存器类66.关于局部变量,下面说法正确的是()。A.定义该变量的程序文件中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问67.文件包含命令中被包含的文件的扩展名(),A.必须是.h B.不能是.hC.可以是.h或.cpp D.必须是.cpp68.预处理命令在程序中都是以()符号开头的。A.*B.#C.&D.69.设array 为一个数组,则表达式sizeof(array)/sizeof(array0)的结
14、果为()。A.array数组首地址B.array数组中元素个数C.array数组中每个元素所占的字节数D.array数组占的总字节数70.用new运算符创建一个含10个元素的一维整型数组的正确语句是()。A.int*p=new a 1 0;B.int*p=new float 10;C.int*p=new int 10;D.int*p=new int 1 0=1,2,3,4,571.下列给字符数组赋初值时,正确的是()。A.char s1=abcdef”;B.char s24=abed;C.char s323=“abc,“xyz”;D.char s44=3 x s t;72.设有定义“stati
15、c int data56;w,设该数组在静态存储区中的起始地址为十进制的1 0 0,若每个in t型数占4个字节,则数组元素data23的地址为()。A.115 B.124C.130 D.16073.假定变量m定义为“int m=7;,则定义变量p的正确语句为()。A.int p=&m;B.int*p=&m;C.int&p=*m;D.int*p=m;74.假 定k是一个double类型的变量,则关于变量p的正确定义语句为()。A.double p=&k;B.int*p=&k;C.double&p=*k;D.char*p=Thank you!”;7 5.变量s的定义 为“char*s=Hello
16、 world!”;”,要使变量p指向s所指向的同一个字符串,则应选 取()。A.char*p=s;B.char*p=&s;C.char*p;p=*s;D.char*p;p=&s;7 6.关于vo id指针,下列说法正确的是()。A.vo id指针就是未指向任何数据的指针B.vo id指针就是已定义而未初始化的指针C.指向任何类型数据的指针可直接赋值给一个vo id指针D.vo id指针值可直接赋给一个非vo id指针7 7.假定一条定义语句为int a10,x,*pa=a;,若要把数组a中下标为3的元素值赋给x,则不正确的语句为()。A.x=pa3;B.x=*(a+3);C.x=a3;D.x=
17、*pa+3;7 8.假定有定义“int b10;int*p b/;则不正确的赋值语句为()。A.pb=b;B.pb=&b0;C.*pb=new int;D.pb=b5;79.假定p是具有double类型的指针变量,则表达式+p使p的值(以字节为单位)增加()。A.1 B.4C.sizeof(double)D.sizeof(p)80.假定p指向的字符串为string”,贝ij coutv v p+3的输出结果为()。A.string B.ringC.ing D.i8 1.假定p指向的字符串为”string,若要输出这个字符串的地址值,则 使 用()。A.cout *s;B.cout s;C.co
18、ut&s;D.couttitle,Wang Tao);B.strcpy(book.title,Wang Tao);C.strcpy(*book.title,w Wang Tao”);D.strcpy(*book)-title,w Wang Tao);8 6.假定有“struct BOOK char title40;float price;BOOK*b o o k;则不正确的语句为(8A.BOOK*x=new book;B.BOOK x=C+Programming1,27.0;C.BOOK*x=new BOOK;D.BOOK*x=book;8 7.假定有“struct BOOK char tit
19、le40;float price;book;则正确的语句为()。A.BOOK&x=&book;B.BOOK&x=book;C.BOOK&x=new BOOK;D.BOOK&x=BOOK;8 8.下列对引用的陈述中不正确的是()。A.每一个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作实际上作用于它所引用的对象C.一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行D.不需要单独为引用分配存储空间8 9.假定变量a和pa定义为“double a 10,*pa=a;,要将 12.35赋值给a中的下标为5的元素,不正确的语句是()。A.pa5=1 2.35;B.a5=
20、1 2.35;C.*(pa+5)=12.35;D.*(a0+5)=12.35;90.假定变量b和pb定义为“int b 10,*pb=b;要将24赋值给b1 元素中,不正确的语句是()。A.*(pb+1)=24;B.*(b+1)=24;C.*+b=24;D.*+pb=24;91.假定指针变量p定义为“int*p=new int(100);”,要释放p所指向的动态内存,应使用语句()。A.delete p;B.delete*p;C.delete&p;D.delete p;9 2.假定指针变量p定义为“int*p=new int30;,要释放p所指向的动态内存,应使用语句()。A.delete p
21、;B.delete*p;C.delete&p;D.delete p;9 3.假定变量x定义为“int x=5;,要使rx成为x的引用(别名),rx应定义为()。A.int rx=x;B.int rx=&x;C.int*rx=&x;D.int&rx=x;94.关于消息,下列说法中不正确的是()。A.发送消息的对象请求服务,接受消息的对象提供服务B.消息的发送者必须了解消息的接收者如何相应消息C.在C+中,消息的发送具体体现为对接收消息的对象的某个函数的调用D.每个对象只能接收某些特定格式的消息95.关于封装,下列说法中不正确的是()oA.通过封装,对象的全部属性和操作结合在起,形成一个整体B.通
22、过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的9 6.面向对象方法的多态性是指()。A.一个类可以派生出多个特殊类B.一个对象在不同的运行环境中可以有不同的变体C.针对一消息,不同的对象可以以适合自身的方式加以响应D.一 个对象可以是由多个其他对象组合而成的97.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时进行相应的软件更新的难易程度叫做软件的()。A.可维护性 B.可复用性C.兼容性 D.正确性98.软件产品可被全部或部分地再用于新的应用的能力叫做软件的()。A.可维护性 B.可
23、复用性C.兼容性 D.正确性99.软件产品与其他软件产品组合成一个整体的难易程度叫做软件的()。A.可维护性 B.可复用性C.兼容性 D.正确性100.软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的()oA.可维护性 B.可复用性C.兼容性 D.正确性101.面向对象软件开发中使用的OOA表 示()。A.面向对象分析 B.面向对象设计C.面向对象语言D.面向对象方法102.面向对象软件开发中使用的0 0 D表 示()。A.面向对象分析B.面向对象设计C.面向对象语言 D.面向对象方法103.关于面向对象系统分析,下列说法中不正确的是()。A.术 语“面向对象分析”可以用缩写O
24、OA表示B.面向对象分析阶段对问题域的描述比实现阶段更详细C.面向对象分析包括问题域分析和应用分析两个步骤D.面向对象分析需要识别对象的内部和外部特征104.在一个类的定义中,包 含 有()成员的定义。A.数据 B.函数 C.数据和函数 D.数据或函数105.在类作用域中能够通过直接使用该类的()成员名进行访问。A.私有 B.公用 C.保护 D.任何106.在关键字public后面定义的成员为类的()成员。A.私有 B.公用 C.保护 D.任何107.在关键字private后面定义的成员为类的()成员。A.私有 B.公用 C.保护 D.任何108.假 定AA为一个类,a为该类公有的数据成员,x
25、为该类的一个对象,则访问x对象中数据成员a的格式为()oA.x(a)B.xa C.x-a D.x.a109.假 定A A为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为()。A.x.a B.x.a()C.x-a D.x-a()110.假定AA为 个类,a为该类公有的数据成员,p x为指向该类对象的一个指针,则访问px所指对象中数据成员a的格式为()。A.px(a)B.pxa C.px-a D.px.a111.假定AA为 个 类,a为该类私有的数据成员,GetValue。为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的
26、格式为()。A.x.a B.x.a()C.x-GetValue()D.x.GetValue()112.假定AA为 个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(A.int AA:a()B.int AA:a()C.AA:a()D.AA:int a()113.假 定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为()。A.a B.AA:a C.a()D.AA:a()114.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字()放在函数原型或函数头的前面。A.inB.inlineC.inLineD.InLiner115
27、.在多文件结构的程序中,通常把类的定义单独存放于()中。A.主文件 B.实现文件C.库文件 D.头文件116.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于()中。A.主文件 B.实现文件 C.库文件 D.头文件117.在多文件结构的程序中,通常把含有main()函数的文件称为()。A.主文件 B.实现文件 C.程序文件 D.头文件11 8一 个C+程序文件的扩展名为()A.h B.c C.cpp D.,cp119.在C+程序中使用的cin标识符是系统类库中定义的()类中的一个对象。A.istream B.ostream C.iostream D.fstream120.在C+程
28、序中使用的cout标识符是系统类库中定义的()类中的一个对象。A.istream B.ostream C.iostream D.fstream121.假定AA是 个 类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为()。A.int B.char C.AA D.AA*122.假定AA是 个 类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为()。A.abc B.*this C.this D.this&123.假 定AA是一个类,“AA&abc();w是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的 值()。A.已
29、经被改变 B.可能被改变C.不变 D.不受函数调用的影响124.假定AA是 个类,AA*abcQconst;”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的 值()。A.已经被改变 B.可能被改变C.不变 D.受到函数调用的影响125.类中定义的成员默认为()访问属性。A.public B.private C.protected D.friend126.结构中定义的成员默认为()访问属性。A.public B.private C.protected D.friend127.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长
30、度为()。A.n B.n+1 C.n-1D.n-21 2 8.在一个用数组实现的队列类中,则 队 尾(即 最 后 个)元素的位置为(A.Iength+1C.(first+length-1)%MS1 2 9.在一个用数组实现的队列类中,则队尾的后一个位置为()。A.Iength+1C.(first+length-1)%MS1 3 0.在一个用数组实现的队列类中,则队首的后一个位置为()。A.first+1C.(first-1)%MS1 3 1.在一个用链表实现的队列类中,假定数组长度为M S,队首元素位置为firs t,队列长度为length,)。B.first+lengthD.(first+l
31、ength)%MS假定数组长度为M S,队首元素位置为firs t,队列长度为length,B.first+lengthD.(first+length)%MS假定数组长度为M S,队首元素位置为firs t,队列长度为length,B.(first+1)%MSD.(first+length)%MS假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队非空,则进行插入时必须把新结点的地址赋给()。A.elemHead B.elemTailC.elem Head-next 和 elem HeadD.elemTa
32、il-next 和 elemTail1 3 2.在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队为空,则进行插入时必须把新结点的地址赋给()。A.elemHead B.elemTailC.elem Head 和 elemTailD.elem Head 或 elemTail1 3 3.队列具有A.先进先出134.栈 具 有(A.先进先出)的操作特性。B.先进后出)的操作特性。B.先进后出C.进出无序C.进出无序D.进出任意D.进出任意135.对于个类的构造函数,其函数名与类名
33、()。A.完全相同 B.基本相同 C.不相同 D.无关系136.对于一个类的析构函数,其函数名与类名()。A.完全相同 B.完全不同 C.只相差一个字符 D.无关系137.类的构造函数是在定义该类的个()时被自动调用执行的。A.成员函数 B.数据成员C.对象 D.友元函数138.类的析构函数是一个对象被(A.建立 B.撤消)时自动调用的。C.赋值 D.引用139.一个类的构造函数通常被定义为该类的()成员。A.公用 B.保护 C.私有 D.友元140.一个类的析构函数通常被定义为该类的()成员。A.私有 B.保护 C.公用 D.友元141.假 定AB为 个类,则 执 行“AB X;”语句时将自
34、动调用该类的()。A.带参构造函数 B.无参构造函数C.拷贝构造函数 D.赋值重载函数142.假定AB为 个类,则 执 行“AB x(a,5);”语句时将自动调用该类的()。A.带参构造函数 B.无参构造函数C.拷贝构造函数 D.赋值重载函数143.假定AB为 个类,则 执 行AB*s=new AB(a,5);”语句时得到的一个动态对象为A.s B.s-a C.s.a D.*s1 4 4.假定AB为 个 类,A.无参构造函数C.赋值重载函数则 执 行“AB r1=r2;M语句时将自动调用该类的(B.带参构造函数D.拷贝构造函数)。145.若需要使类中的一个指针成员指向一块动态存储空间,则通常在
35、()函数中完成。A.析构 B.构造 C.任一成员 D.友元146.当类中的一个整型指针成员指向 块具有n*sizeof(int)大小的存储空间时,它最多能够存储()个整数。A.n B.n+1 C.n-1 D.1147.假定一个类的构造函数为A(int aa,int bb)a=aa;b=aa*bb;,则 执 行A x(4,5);“语句后,x.a和x.b的值分别为()oA.4 和 5 B.5 和 4 C.4 和 20 D.20 和 5148.假定一个类的构造函数为 wA(int aa=1,int bb=0)a=aa;b=bb;则执行“A x(4);”语句后,x.a和x.b的值分别为()。A.1 和
36、 0 B.1 和 4 C.4 和 1 D.4 和 0149.假定AB为 个类,则()为该类的拷贝构造函数的原型说明。A.AB(AB x);B.AB(AB&x);C.void AB(AB&x);D.AB(int x);150.假定一个类的构造函数为“B(int ax,int bx):a(ax),b(bx)”,执行“Bx(1,2),y(3,4);x=y函语句序列后x.a的值为()。A.1 B.2 C.3 D.41 5 1.假定一个类AB只含有个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为()。A.AB()a=0;B.AB(int aa=0):a(aa)C.AB(int
37、 aa):a(aa)D.AB()1 5 2.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为()。A.AB()B.AB():a(0)C.AB(int aa=0)a=aa;D.AB(int aa)153.对于任一个类,用户所能定义的构造函数的个数至多为()。A.0 B.1 C.2 D.任意个154.对于任一个类,用户所能定义的析构函数的个数至多为()。A.0 B.1 C.2 D.任意个155.假 定AB为 个类,则 执 行“AB*px=new ABn;”语句时将()。A.动态分配一个数组 B.动态分配一个对象C.静态分配一个数组 D.静态分配一个对象156.设px是指向
38、一个类对象的指针变量,则 执 行“delete px;”语句时,将自动调用该类的()。A.无参构造函数 B.带参构造函数C.析构函数 D.拷贝构造函数157.当一个类对象离开它的作用域时,系统自动调用该类的()。A.无参构造函数 B.带参构造函数C.拷贝构造函数 D.析构函数158.假定一个类对象数组为A n,当离开它定义的作用域时,系统自动调用该类析构函数的次数为()。A.0 B.1 C.n D.n-1159.假 定AB为 个 类,则 执 行“AB a 10;”语句时调用该类无参构造函数的次数为()。A.0 B.1 C.9 D.101 60.假定AB为一个类,则 执 行“AB*px=new
39、AB n;”语句时调用该类无参构造函数的次数为()。A.n B.n-1 C.1 D.0161.假 定AB为 个类,则 执 行“AB a,b(3),*p;”语句时共调用该类构造函数的次数为()。A.2 B.3 C.4 D.5162.假定AB为一个类,则 执 行“ABa(2),b3,*p 4;”语句时共调用该类构造函数的次数为()。A.3 B.4 C.5 D.91 6 3.假 定AB为一个类,则执行“ABa,b(2),可3,*p=&a;语句时共调用该类无参构造函数的次数为()。A.5 B.6 C.3 D.4164.假定AB为一个类,则执行AB*p=new AB(1,2);”语句时共调用该类构造函数
40、的次数为()。A.0 B.1 C.2 D.3165.假定AB为一个类,px为指向该类的个含有n个对象的动态数组的指针,则执行“delete px;”语句时共调用该类析构函数的次数为()。A.0 B.1 C.n D.n+1166.对类对象成员的初始化是通过构造函数中给出的()实现的。A.函数体 B.初始化表C.参数表 D.初始化表或函数体167.对类中常量成员的初始化是通过构造函数中给出的()实现的。A.函数体 B.参数表C.初始化表 D.初始化表或函数体168.对类中引用成员的初始化是通过构造函数中给出的()实现的。A.函数体B.参数表C.初始化表D.初始化表或函数体169.类的构造函数可以带
41、有()个参数。A.0 B.1 C.2 D.任意170.类的析构函数可以带有()个参数。A.0 B.1 C.2 D.任意171.一个类的静态数据成员所表示属性(A.是类的或对象的属性C,只是类的属性)。B.只是对象的属性D.类和友元的属性172.类的静态成员的访问控制()oA.只允许被定义为privateB.只允许被定义为private或protectedC.只允许被定义为publicD.可允许被定义为 private、protected 或 public173.静态成员函数对类的数据成员访问()。A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数
42、据成员174.被非静态成员函数访问的类的数据成员()oA.可以是非静态数据成员或静态数据成员 B.不可能是类的静态数据成员C.只能是类的非静态数据成员1 7 5.静态数据成员的初始化是在(A.构造函数C.所属类D,只能是类的静态数据成员)中进行的。B.任何成员函数D.全局区1 7 6.当将一个类A或函数f()说明为另一个类B的友元后,类A或函数f()能够直接访问类B的()。A.只能是公有成员B.只能是保护成员C.只能是除私有成员之外的任何成员1 7 7.引入友元的主要目的是为了(A.增强数据安全性C.提高程序的效率和灵活性D.具有任何权限的成员B.提高程序的可靠性D.保证类的封装性178.一个
43、类的成员函数也可以成为另一个类的友元函数,这时的友元说明()A.需加上类域的限定 B.不需加上类域的限定C.类域的限定可加可不加 D.不需要任何限定179.一个类的友元不是该类的成员,与该类的关系密切,所 以 它()。A.有this指针,有默认操作的对象B.没有this指针,可以有默认操作的对象C.有this指针,不能执行默认操作D.没有this指针,也就没有默认操作的对象180.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是()A.作为友元函数重载的1元运算符 B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符 D.作为成员函数重载的2元运算符181.在成员函数中
44、进行双目运算符重载时,其参数表中应带有()个参数。A.0 B.1 C.2 D,31 8 2.双目运算符重载为普通函数时,其参数表中应带有()个参数。A.0 B.1 C.2 D.3183.如果表达式a+b中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()A.a.operator+(b)B.b.operator+(a)C.operator+(a,b)D.operator(a+b)184.如果表达式a=b中 的“=”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表 示 为()。A.a.operator=(b)B.b.operator=(a)C.operator
45、=(a,b)D.operator=(b,a)185.如果表达式a+中 的“+”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示 为()。A.a.operator+()B.operator+(a)C.operator+(a,1)D.operator+(1,a)1 8 6.如果表达式+a中 的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示 为()。A.a.operator+(1)B.operator+(a)C.operator+(a,1)D.a.operator+()187.关于运算符重载,下列说法正确的是()。A.重载时,运算符的优先级可以改变。B.重载时,运
46、算符的结合性可以改变。C.重载时,运算符的功能可以改变。D.重载时,运算符的操作数个数可以改变。188.关于运算符重载,下列说法正确的是()。A.所有的运算符都可以重载。B.通过重载,可以使运算符应用于自定义的数据类型。C.通过重载,可以创造原来没有的运算符。D.通过重载,可以改变运算符的优先级。189.一个程序中数组a和变量k定义为int a510,k;,且程序中包含有语句“a(2,5)=+k*3;”,则此语句中肯定属于重载操作符的是()。A.()B.=C.+D.*1 9 0.假 定K是一个类名,并有定义“Kk;int j;,已知K中重载了操作符(),且语句“j=k(3);”和“k(5)=9
47、9;”都能顺利执行,说明该操作符函数的原形只可能是()。A.K operator()(int);B.int operator()(int&);C.int&operator()(int);D.K&operator()(int);1 91.假定M是一个类名,且M中重载了操作符=,可以实现M对象间的连续赋值,如m l=m2=m3;重载操作符=的函数原型最好是()。A.int operaotor=(M);B.int operator=(M&);C.M operator=(M&);D.M&operator=(M);192.下面是重载双目运算符+的普通函数原形,其中最符合+原来含义的是()。A.Value
48、 operator+(Value,Value);B.Value operator+(Value,int);C.Value&operator+(Value,Value);D.Value&operator+(Value&,Value&);1 9 3.下面是重载双目运算符-的成员函数原形,其中最符合-原来含义的是()。A.Value Value:operator-(Value);B.Value Value:operator-(int);C.Value&Value:operator-(Value);D.Value&Value:operator-(Value&);1 9 4.在重载一运算符时,若运算符函
49、数的形参表中没有参数,则不可能的情况是()A.该运算符是一个单目运算符。B.该运算符函数有一个隐含的参数this。C.该运算符函数是类的成员函数。D.该运算符函数是类的友元函数。195.关于插入运算符 的重载,下列说法不正确的是()。A.运算符函数的返回值类型是ostream&。B.重载的运算符必须定义为类的成员函数。C.运算符函数的第 个参数的类型是ostream&。D.运算符函数有两个参数。196.从一个基类派生出的各个类的对象之间()。A.共享所有数据成员,每个对象还包含基类的所有属性B.共享部分数据成员,每个对象还包含基类的所有属性C.不共享任何数据成员,但每个对象还包含基类的所有属性
50、D.共享部分数据成员和函数成员197.如果是类B在类A的基础上构造,那么,就 称()。A.类A为基类或父类,类B为超类或子类B.类A为基类、父类或超类,类B为派生类或子类C.类A为派生类,类B为基类D.类A为派生类或子类,类B为基类、父类或超类198.C+的继承性允许派生类继承基类的()A.B.C.D.部分特性,部分特性,所有特性,所有特性,并允许增加新的特性或重定义基类的特性但不允许增加新的特性或重定义基类的特性并允许增加新的特性或重定义基类的特性但不允许增加新的特性或重定义基类的特性199.派生类的成员函数可以直接访问基类的()成员。A.所有 B.公有和保护C.保护和私有D.私有200.对