《《面向对象程序设计c》综合复习题集及答案详解.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计c》综合复习题集及答案详解.docx(125页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、、单选题1. C+源程序文件的缺省扩展名为(A )A. cpp B. exe C. obj D. lik2,由C+源程序文件编译而成的H标文件的缺省扩展名为(C )A.cppB.exeC. objD.lik3.由C+目标文件连接而成的可执行文件的缺省扩展名为(B )。A. cppB.exeC. objD.lik4.编写C+程序一般需经过的几个步骤依次是(B )A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接(?)5.以下标:识符中不全是呆留字的是A.caseforintB. default then whileC. bool class
2、longD. goto return char6 .能作为C+程序的基本单位是(C ),A,字符B.语句 C.函数 D.源程序文件7 .程序中主函数的名字为( A).A. main B. MAIN C. Main D.任意标识符8 . C+程序的基本模块为( D)。A,表达式B.标识符 C.语句 D.函数9 .可用作C+语言用户标识符的组标识符是(B )。A. voiddefine+W0RDB. a3_b3_123 YNC. for -abcCaseD. 2a DO sizeof10 .存储以下数据,占用存储字节最多的是(D )。A. 0 B. C. ” D. 0.0 (float 型)11
3、.程序运行中需要从键盘上输入多于个数据时,各数据之间应使用(D )符号 作为分隔符。A,空格或逗号B.逗号或回车 C,逗号或分号D,空格或回车12 .设“ int a=12;”,则执行完语句 a+=a*a;后,a的值是(C ),A. 12 B. 144 C. 156 D. 288(?) 13.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则 下列能正确表示代数式1/abc的表达式是(D ) A. 1. 0/a*b*c B. l/(a*b*c) C. 1/a/b/(float)c D. 1. 0/a/b/c(括号运算)14.设“ inta=15,b=26;”,则“ cout(a, b)
4、;的输出结果是(D)。 A. 15 B. 26, 15 C. 15,26 D. 2615 .设x是个bool型的逻辑量,y的值为10,则表达式x & y的值为(C ).A. 1 B. 0 C.与x值相同 D.与x值相反16 . x0 & x10B.x10C.x=0x0 & x1017 . x0 I I y=5的相反表达式为(B )。A.x=0Iy!=5B.x0y!=5D. x0 & y=518 .设x和y均为bool量,则x & y为真的条件是(A )A,它们均为真B.其中一个为真C,它们均为假D.其中一个为假19 .设x和y均为bool量,则x | y为假的条件是(C )。A,它们均为真B.
5、其中一个为真C,它们均为假D.其中一个为假(?)20.字符串 a+b=12n”的长度为(B )。A. 6 B. 7 C. 8 D. 921.假定下列x和y均为int型变量,则不正确的赋值为(B ) A. x+=y+ B. x+=y+ C. x=+y D. +x=+y22,下列的符号常量定义中,错误的定义是(C ) A. const M=10;B. const int M=20;C. const char ch;D. const bool mark=true;23.循环语句 “for(int i=0; in; i+) couti*i, 9 ; n 中循环体执行的次 数为(C )A. 1 B. n
6、-1 C. n D. n+124 .在下面循环语句中循环体执行的次数为(B ) for(int i=0; in/2) break;A. n/2 B. n/2+1 C. n/2-1 D. n-125 .在下面循环语句中内层循环体S语句的执行总次数为(D ) for(int i=0; in; i+)for(int j=i; jn; j+) S;D. n(n+l)/2A. n2 B. (n+1 )/2 C. n(n-l)/226 .在下面循环语句中循环体执行的次数为(C ) int i=0, s=0; while(s20) i+; s+=i; A. 4 B. 5 C. 6 D. 727 .在下面循环
7、语句中循环体执行的次数为(A ) int i=0; do i+; while(i*i10);A. 4 B. 3 C. 5 D. 2A )来解决。D. switch 语句D.任一种循环28 .当处理特定问题时的循环次数已知时,通常采用(A. for循环B. while循环C. do循环29 .循环体至少被执行一次的语句为()。A. for循环B. while循环C. do循环30 . switch语句能够改写为()语句。A. for B. if C. do D. while31 . do语句能够改写为()语句。A.复合 B. if C. switch D. while32 .在下面的维数组定义中
8、,哪个有语法错误。()A. int a=1,2,3; B. int a10 = 0;C. int a;D. int a5;33 .在下面的字符数组定义中,哪个有语法错误。()。A. char a20 = w abcdefg ; B. char a= x+y=55.C. char a15;D. char a10=* 5;34,在下面的二维数组定义中,正确的是()A. int a5 ;B. int a 5;C. int a3=l,3,5, 2; D. int a (10);35 .假定一个二维数组的定义语句为int a34 = 3,4,8,6;”,则元素 al2的值为( )。A. 2 B. 4 C
9、. 6 D. 836 .假定一个二维数组的定义语句为int a3 4 = 3,4, 2,8,6 ;M ,则元素 a2l的值为()。A. 0 B. 4 C. 8 D. 6(?)37.若定义了函数double *function(),则函数function的返回值为(B )。A.实数型 B.实数的地址C.指向函数的指针 D.函数的地址38 .以下说法中正确的是(B ) A. C+程序总是从第一个定义的函数开始执行B. C+程序总是从main函数开始执行C. C+函数必须有返回值,否则不能使用函数D. C+程序中有调用关系的所有函数必须放在同一个程序文件中39 .以下叙述中不正确的是(C )。A.在
10、个函数中,可以有多条return语句B,函数的定义不能嵌套,但函数的调用可以嵌套C,函数必须有返回值D.不同的函数中可以使用相同名字的变量40 .函数重载是指()。A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同41 .以下关于函数模板叙述正确的是()。A,函数模板也是个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C,通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的
11、函数没有类型42 .下列()的调用方式是引用调用。A.形参和实参都是变量B,形参是指针,实参是地址值C.形参是引用,实参是变量 D.形参是变量,实参是地址值43 .为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择A,内联函数B.重载函数C.递归函数D.函数模板44 .函数原型语句正确的是()。A. int Function(void a); B. void Function (int);C. int Function(a);D. void int(double a);45 . C+中函数返回值的类型是由()决定的。A. return语句中表达式的类型B.该函数定义时的类型C.
12、调用函数时的调用语句D系统根据结果46 .以下函数的返回结果是()。int function(char *x) char *p=x; while(*p+); return(p-x-1);)A,求字符串的长度B.将字符串x连接到字符串p后面C,将字符串x复制到字符串p中 D.将字符串x反向存放47 .函数调用func(expl, exp2), (exp3, exp4, exp5)中所含实参的个数为()个。A. 1 B. 2 C. 4 D. 548 .设有如下函数定义int f(char *s) char *p=s;while(*p!= 、) p+;return(p-s);)在主函数中用coutf
13、( good”)调用上述函数,则输出结果为()。A. 3 B. 4 C. 5 D. 649 .以下正确的函数原型语句是()A. double fun(int x, int y)B. double fun(int x;int y)C. double fun(int, int);D. double fun (int x, y);50,以下正确的说法是()。A,用户调用标准库函数前,必须重新定义B,用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统不允许用户重新定义标准库函数D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户 源文件中51.函数调用不可以()。A,出
14、现在个表达式中B,出现在执行语句中C.作为个函数的实参D.作为个函数的形参52,以下正确的描述是()。A,函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C,函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套53 .若用数组名作为函数调用的实参,传递给形参的是()。A,数组的首地址B.数组中第一个元素的值C.数组全部元素的值D.数组元素的个数54 .以下错误的描述是()。A.被调用函数中可以不用return语句B.被调用函数中可以用多个return语句C.被调用函数中,如果有返回值,就一定要有return语句D.被调用函数中,个retur
15、n语句可返回多个值给调用函数55,以下正确的描述是()。A,不允许设置参数的默认值B.设置参数的默认值只能在定义函数时设置C.设置参数的默认值时,应该设置右边的参数D.设置参数的默认值时,应该全部参数都设置56 .采用重载函数的目的是()。A,实现共享B,减少空间C,提高速度D.使用方便,提高可读性57 .将两个字符串连接起来组成一个字符串时,选用()函数。A. strlen () B. strcap () C. strcat () D. strcmp ()58 .以下叙述中正确的是().A.使用#define可以为常量定义个名字,该名字在程序中可以再赋另外的值 B,使用const定义的常量名
16、有类型之分,其值在程序运行时是不可改变的 C,在程序中使用内联函数使程序的可读性变差D,在定义函数时可以在形参表的任何位置给出缺省形参值59 .下面的标识符中,()是文件级作用域。A.函数形参B.语句标号C.外部静态类标识符D.自动类标识符60 .以下叙述不正确的是().A,宏替换不占用运行时间B,宏名无类型C,宏替换只是字符替换D,宏名必须用大写字母表示61 . C+语言的编译系统对宏命令的处理是()A,在程序运行时进行B,在程序连接时进行C,和C+程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行62 .当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是
17、 ().A,直接按系统设定的标准方式搜索目录B,先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D,搜索当前逻辑盘上的所有目录63 .当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是( 八A.直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D,搜索当前逻辑盘上的所有目录64 .在下面存储类中,()对象的可见性与生存期不一致。A,外部类B.自动类 C.内部静态类D.寄存器类65 .在下面存储类中,()的对象不是局部变量。A,外部静态类B.自动类 C.函数形参D.寄存器类66
18、.关于局部变量,下面说法正确的是()A,定义该变量的程序文件中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问67 .文件包含命令中被包含的文件的扩展名()。A.必须是.hB.不能是.h C,可以是.h或.cppD,必须是.cpp68 .预处理命令在程序中都是以()符号开头的。A. * B. # C. & D. 69 .设 array 为一个数组,则表达式 sizeof (array)/sizeof (array0)的结果为 ()A. array数组首地址B.
19、array数组中元素个数C. array数组中每个元素所占的字节数D. array数组占的总字节数70 .用new运算符创建一个含10个元素的一维整型数组的正确语句是()。A. int *p=new a10;B. int *p=new float10;C. int *p=new int10;D. int *p=new int10 = l, 2, 3,4, 571 .下列给字符数组赋初值时,正确的是()。A. char si口二 abcdef” ;B. char s24 = w abed” ;C. char s32 3 = abc”, xyz ; D. chars44 口=匕,x s t ;72
20、 .设有定义“ static int data 5 6;,设该数组在静态存储区中的起始地址 为十进制的100,若每个int型数占4个字节,则数组元素data2 3的地址为()。A. 115 B. 124 C. 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二” Tha
21、nk you!;75 .变量s的定义为“char*s=Helloworld!” ;”,要使变量p指向s所指向的 同一个字符串,则应选取()。A. char *p二s;B. char*p二&s;C. char*p*s; D. char *p; p二&s;76 .关于void指针,下列说法正确的是()。A. void指针就是未指向任何数据的指针B. void指针就是已定义而未初始化的指针C,指向任何类型数据的指针可直接赋值给个void指针D. void指针值可直接赋给个非void指针77 .假定一条定义语句为“int a10, x, *pa=a;,若要把数组a中下标为3的 元素值赋给x,则不正确的
22、语句为()。A. x=pa3; B. x=*(a+3); C. x=a3; D. x=*pa+3;78 .假定有定义int b10; int *pb;”,则不正确的赋值语句为()。A. pb=b; B. pb=&b0; C. *pb=new int; D. pb=b5;79 .假定p是具有double类型的指针变量,则表达式+p使p的值(以字节为单位) 增加()。A. 1B. 4 C. sizeof(double)D. sizeof(p)80 .假定p指向的字符串为string,则coutp+3的输出结果为()。A. string B. ring C. ing D. i81 .假定p指向的字符
23、串为string”,若要输出这个字符串的地址值,则使用C )。A. couts; B. couts; C. couttitle, n Wang Tao ); B. strcpy(book. title, Wang Tao);C. strcpy(*book. title, Wang Tao ); D. strcpy(*book)-title, Wang Tao);86 .假定有struct BOOKchar title40; float price; BOOK *book;.则 不正确的语句为()。A. BOOK *x=new book;B. BOOK x=C+ Programming, 27.
24、 0;C. BOOK *x=new BOOK;D. BOOK *x=book;87 .假定有struct BOOK char title40; float price; book;.则正确的语 句为()。A. BOOK &x= &book;B. BOOK &x=book;C. BOOK &x=new BOOK;D. BOOK &x=BOOK;88 .下列对引用的陈述中不正确的是()。A,每个引用都是其所引用对象的别名,因此必须初始化B.形式上针对引用的操作实际上.作用于它所引用的对象C, 一旦定义了引用,一切针对其所引用对象的操作只能通过该引用间接进行 D.不需要单独为引用分配存储空间89 .
25、假定变量a和pa定义为“doublea10, *pa=a;,要将12. 35赋值给a中的 下标为5的元素,不正确的语句是()。A. pa5=12. 35; B. a5=12. 35;C. *(pa+5)=12. 35; D. *(a0+5)=12. 35;90 .假定变量b和pb定义为int b10, *pb=b;,要将24赋值给b口元素中, 不正确的语句是()。A. *(pb+1)=24; B. *(b+l)=24; C. *+b=24; D. *+pb=24;91 .假定指针变量p定义为int *p=new int (100);,要释放p所指向的动态内 存,应使用语句()。A. delet
26、e p; B. delete *p; C. delete &p; D. delete p;92 .假定指针变量p定义为int *p=new int30;,要释放p所指向的动态内存, 应使用语句()。A. delete p; B. delete *p; C. delete &p; D. delete p;93 .假定变量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.发送消息的对象请求服务,接受消息的对象提供服务
27、B.消息的发送者必须了解消息的接收者如何相应消息C.在C+中,消息的发送具体体现为对接收消息的对象的某个函数的调用D.每个对象只能接收某些特定格式的消息95 .关于封装,下列说法中不正确的是()。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的96 .面向对象方法的多态性是指()。A. 个类可以派生出多个特殊类B. 个对象在不同的运行环境中可以有不同的变体C.针对消息,不同的对象可以以适合自身的方式加以响应D. 个对象可以是由多个其他对象组合而成的9
28、7 .软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不 足时进行相应的软件更新的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性98 .软件产品可被全部或部分地再用于新的应用的能力叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性99 .软件产品与其他软件产品组合成一个整体的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性100 .软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的( )A.可维护性B.可复用性C.兼容性D.正确性101 .面向对象软件开发中使用的00A表示()。A.面向对象分析B.面向对象设计
29、C,面向対象语言D,面向对象方法102 .面向对象软件开发中使用的00D表示()。A,面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法103 .关于面向对象系统分析,下列说法中不正确的是()。A,术语“面向对象分析”可以用缩写00A表示B.面向対象分析阶段对问题域的描述比实现阶段更详细C.面向対象分析包括问题域分析和应用分析两个步骤D.面向対象分析需要识别対象的内部和外部特征104 .在个类的定义中,包含有()成员的定义。A.数据B,函数 C.数据和函数D.数据或函数105 .在类作用域中能够通过直接使用该类的()成员名进行访问。A,私有 B,公用 C.保护 D.任何106 .在关
30、键字public后面定义的成员为类的()成员。A,私有B,公用C.保护D1任何107 .在关键字private后面定义的成员为类的()成员。A,私有B,公用C.保护D,任何108 .假定AA为个类,a为该类公有的数据成员,x为该类的个対象,则访问x 対象中数据成员a的格式为()。A. x(a) B. x a C. x-a D. x. a109 .假定AA为一个类,a()为该类公有的函数成员,x为该类的个対象,则访问 x対象中函数成员a()的格式为()。A. x. a B. x. a () C. x-a D. x-a ()110 .假定AA为个类,a为该类公有的数据成员,px为指向该类対象的一个
31、指针, 则访问px所指対象中数据成员a的格式为()。A. px (a) B. px a C. px-a D. px. a111 .假定AA为个类,a为该类私有的数据成员,GetValueO为该类公有函数成 员,它返回a的值,x为该类的个対象,则访问x対象中数据成员a的格式为()。A. x. a B. x. a() C. x-GetValue() D. x. GetValueO112 .假定AA为一个类,int a()为该类的一个成员函数,若该成员函数在类定义体 外定义,则函数头为()。A. int AA: :a()B. int AA:a()C. AA: :a()D. AA:int a()113
32、 .假定AA为个类,a为该类公有的数据成员,若要在该类的一个成员函数中 访问它,则书写格式为()。A. a B. AA:a C. a() D. AA:a()114 .若需要把个类外定义的成员函数指明为内联函数,则必须把关键字() 放在函数原型或函数头的前面。A. in B. inline C. inLine D. InLiner115 .在多文件结构的程序中,通常把类的定义单独存放于()中。A,主文件 B.实现文件C.库文件 D.头文件116,在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于() 中。A,主文件 B.实现文件C.库文件 D.头文件117 .在多文件结构的程序中,通
33、常把含有main。函数的文件称为()。A.主文件 B.实现文件C,程序文件 D.头文件118 .个C+程序文件的扩展名为()。A. . h B. . c C. . cpp D., cp119 .在C+程序中使用的cin标识符是系统类库中定义的()类中的个对象。A.istreamB. ostreamC.iostreamD.fstream120 .在C+程序中使用的cout标识符是系统类库中定义的()类中的个对象。A.istreamB. ostreamC.iostreamD.fstream121 .假定AA是个类,abc是该类的个成员函数,则参数表中隐含的第一个参 数的类型为()。A. int B
34、. char C. AA D. AA*122 .假定AA是个类,abc是该类的个成员函数,则参数表中隐含的第一个参 数为()。A. abc B. *this C. this D. this&123 .假定AA是个类,“AA& abc();”是该类中一个成员函数的原型,若该函数 存在对this赋值的语句,当用x.abc()调用该成员函数后,x的值()。A,已经被改变B.可能被改变C.不变D.不受函数调用的影响124 .假定AA是一个类,“AA* abcOconst;”是该类中一个成员函数的原型,若该 函数返回this值,当用x. abc ()调用该成员函数后,x的值()。A,已经被改变B.可能被
35、改变C.不变D.受到函数调用的影响125 .类中定义的成员默认为()访问属性。A. publicB. privateC. protectedD. friend126 .结构中定义的成员默认为()访问属性。A. publicB. privateC. protectedD. friend127 .当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串 的最大长度为()。A. n B. n+1 C. n-1 D. n-2128 .在个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first, 队列长度为length,则队尾(即最后个)元素的位置为()。A. length+1B
36、. first+lengthC. (f i rst+1ength-1)%MSD. (f i rst+1ength)%MS129 .在个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first, 队列长度为length,则队尾的后一个位置为()。A. length+1B. first+lengthC. (first+length-l)%MSD. (first+length)%MS130,在一个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first, 队列长度为length,则队首的后一个位置为()A. first+1B. (first+l)%MSC. (first-l)%M
37、SD. (first+length)%MS131,在个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含 的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTai 1表示, 若链队非空,则进行插入时必须把新结点的地址赋给()B. elemTai1A. elemHeadD. elemHead-next 和 elemHead D. elemTail-next 和 elemTail132,在个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含 的指针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTai 1表示, 若
38、链队为空,则进行插入时必须把新结点的地址赋给()A. elemHeadB. elemTailC. elemHead 和 elemTailD. elemHead 或 elemTail133 .队列具有()的操作特性。A.先进先出B.先进后出134 .栈具有()的操作特性。A.先进先出B.先进后出C.进出无序D.进出任意C.进出无序D.进出任意135 .对于个类的构造函数,其函数名与类名()。A.完全相同B.基本相同C.不相同D.无关系136 .对于个类的析构函数,其函数名与类名()。A,完全相同B.完全不同C.只相差个字符D.无关系137 .类的构造函数是在定义该类的个()时被自动调用执行的。A
39、,成员函数 B.数据成员C.对象 D,友元函数138 .类的析构函数是一个对象被()时自动调用的。A,建立 B.撤消C.赋值 D,引用139 . 个类的构造函数通常被定义为该类的()成员。A,公用B.保护C.私有D.友元140 . 个类的析构函数通常被定义为该类的()成员。A,私有B.保护C.公用D1友元141 .假定AB为个类,则执行“AB x;”语句时将自动调用该类的()。A.带参构造函数B.无参构造函数C.拷贝构造函数 D.赋值重载函数142 .假定AB为个类,则执行“AB x(a,5);”语句时将自动调用该类的()。A.带参构造函数B.无参构造函数C.拷贝构造函数 D.赋值重投函数14
40、3 .假定AB为个类,则执行“AB *s=new AB (a, 5); ”语句时得到的个动态对 象为 0A. s B. s-a C. s. a D. *s144 .假定AB为个类,则执行“AB rl=r2;”语句时将自动调用该类的()。A.无参构造函数B,带参构造函数C.赋值重载函数D.拷贝构造函数145 .若需要使类中的一个指针成员指向块动态存储空间,则通常在()函数中 完成。A.析构B.构造C.任一成员D.友元146 .当类中的个整型指针成员指向一块具有n*sizeof (int)大小的存储空间时, 它最多能够存储()个整数。A. nB. n+1 C. n-l D. 1147 .假定一个类
41、的构造函数为A(int aa, int bb) a=aa; b=aa*bb;”,则执 行“A x(4,5);”语句后,x.a和x.b的值分别为()。A. 4 和 5 B. 5 和 4 C. 4 和 20 D. 20 和 5148 .假定一个类的构造函数为A(int aa=l, int bb=0) a=aa; b=bb;,则执 行“A x (4);”语句后,x. a和x.b的值分别为()A. 1 和 B. 1 和 4 C. 4 和 1 D. 4 和 149 .假定AB为一个类,贝)为该类的拷贝构造函数的原型说明。A. AB(AB x) ; B. AB(AB& x); C. void AB(AB&
42、 x); D. AB(int x);150 .假定一个类的构造函数为B(intax, int bx): a (ax), b(bx) ,执行B x(l,2),y(3,4);x=y;” 语句序列后 x.a 的值为()A. 1 B. 2 C. 3 D. 4151 .假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时, 系统为该类定义的无参构造函数为()A. AB () a=0;B. AB(int aa=O): a(aa) C. AB(int aa): a(aa) D. AB() 152 .假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数 可以为()A. ABO B. ABO : a(0) )C. AB(int aa=0) a=aa; D. AB(int aa) 153 .对于任一个类,用户所能定义的构造函数的个数至多为()A. 0B. 1C. 2D.任意个154 .对于任一个类,用户所能定义的析构函数的个数至多为()A. 0B. 1C. 2D.任意个155 .假定AB为个类,则执行AB *px=new ABn;语句时将()A.动态分配个数组B.动态分配个对象C,静态分配个数组D,静态分配个对象156 .设px是指向个类对象的指针变量,贝执行“delete px;”语句时,将自动 调用该类的()A.无参构造函数B.带参构造函数