《面向对象程序设计C》.docx
面向对象程序设计综合复习题集、单选题1. C+源程序文件的缺省扩展名为(A )A. cpp B. exe C. obj D. lik2 .由C+源程序文件编译而成的目标文件的缺省扩展名为(C )A.cppB.exeC. objD.lik3 .由C+目标文件连接而成的可执行文件的缺省扩展名为(B )。A.cppB.exeC. objD.lik4 .编写C+程序一般需经过的几个步骤依次是()。A.编译、编辑、连接、调试B.编辑、编译、连接、调试C.编译、调试、编辑、连接D.编辑、调试、编辑、连接5 .以下标识符中不全是保留字的是()。A. caseforintB. defaultthenwhileC. boolclasslongD. gotoreturnchar6 .能作为C+程序的基本单位是()。A,字符B.语句 C.函数 D.源程序文件7 .程序中主函数的名字为()。A. main B. MAIN C. Main D,任意标识符8 . C+程序的基本模块为()A,表达式B.标识符 C.语句 D.函数9 .可用作C+语言用户标识符的组标识符是()»A.voiddefine+W0RDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof10 .存储以下数据,占用存储字节最多的是()。A. 0 B. C. "0" D. 0.011 .程序运行中需要从键盘上输入多于个数据时,各数据之间应使用()符号作为 分隔符。A,空格或逗号 B.逗号或回车C,逗号或分号D,空格或回车12 .设“ int a=12;”,则执行完语句" a+=a*a;"后,a的值是().A. 12 B. 144 C. 156 D. 28813 .假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能 正确表示代数式1/abc的表达式是() A. 1.0/a*b*c B. l/(a*b*c) C.1/a/b/(float)c D. 1. 0/a/b/c14 .设“ int a=15, b=26;",则"cout«(a, b);"的输出结果是()A. 15 B. 26, 15 C. 15,26 D. 2615 .设x是个bool型的逻辑量,y的值为10,则表达式x && y的值为()。A. 1 B. 0 C.与x值相同D.与x值相反16 . x>0 && x<=10的相反表达式为()。A.x<=0|x>10B.x<=0 && x>10C.x<=0x<=10D.x>0 && x>1017 . x>0 I I y=5的相反表达式为()。A.x<=0y!=5B.x<=0 && y!=5C. x>0y!=5D. x>0 && y=518 .设x和y均为bool量,则x && y为真的条件是()»A,它们均为真B.其中一个为真C,它们均为假D.其中一个为假19 .设x和y均为bool量,则x | y为假的条件是()»A,它们均为真B.其中一个为真C,它们均为假D.其中一个为假20 .字符串" a+b=12n”的长度为()。A. 6 B. 7 C. 8 D. 921 .假定下列x和y均为int型变量,则不正确的赋值为()。A. x+=y+ B. x+=y+ C. x=+y D. +x=+y22,下列的符号常量定义中,错误的定义是()。A. const M=10;C. const char ch;B. const int M=20;D. const bool mark=true;23 .循环语句a for (int i=0; i<n; i+) cout«i*i«,中循环体执行的次数为兀A. 1 B. n-1 C. n D. n+124 .在下面循环语句中循环体执行的次数为()。for(int i=0; i<n; i+)if(i>n/2) break;A. n/2 B. n/2+1 C. n/2-l D. n-l25 .在下面循环语句中内层循环体S语句的执行总次数为()。for(int i二; i<n; i+)for(int j=i; j<n; j+) S;A. n2 B. (n+l)/2 C. n(n-l)/2 D. n(n+l)/226 .在下面循环语句中循环体执行的次数为()。int i=0, s=0; while(s<20) i+; s+=i;A. 4 B. 5 C. 6 D. 727 .在下面循环语句中循环体执行的次数为()。int i=0; do i+; while(i*i<10);A. 4 B. 3 C. 5 D. 2)来解决。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 .在下面的维数组定义中,哪个有语法错误。()A. int a = l, 2,3;B. int a10 = 0;C. int a;D. int a5;33 .在下面的字符数组定义中,哪个有语法错误。()。A. char a20="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 a 3 4 = 3, 4, 2, 8,6):",则元素al2 的值为()«A. 2 B. 4 C. 6 D. 836 .假定一个二维数组的定义语句为“int a3 4 = 3, 4, 2, 8, 6:",则元素a2l 的值为()A. 0 B. 4 C. 8 D. 637 .若定义了函数double *function(),则函数function的返回值为()。A.实数型B.实数的地址C.指向函数的指针 D.函数的地址38 .以下说法中正确的是()。A. C+程序总是从第一个定义的函数开始执行B. C+程序总是从main函数开始执行C. C+函数必须有返回值,否则不能使用函数D. C+程序中有调用关系的所有函数必须放在同一个程序文件中39 .以下叙述中不正确的是()。A.在个函数中,可以有多条return语句B.函数的定义不能嵌套,但函数的调用可以嵌套C.函数必须有返回值D.不同的函数中可以使用相同名字的变量40 .函数重载是指()。A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同41 .以下关于函数模板叙述正确的是()。A,函数模板也是个具体类型的函数B.函数模板的类型参数与函数的参数是同一个概念C,通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型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.调用函数时的调用语句D系统根据结果46 .以下函数的返回结果是()。int function(char *x) char *p=x; while(*p+); return(p-x-l);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( "good”)调用上述函数,则输出结果为()。A. 3 B. 4 C. 5 D. 649,以下正确的函数原型语句是()»A. doublefun (intx, inty)B. doublefun(intx;inty)C. doublefun(int,int);D. doublefun(intx, y);50 .以下正确的说法是()。A,用户调用标准库函数前,必须重新定义B.用户可以重新定义标准库函数,若如此,该函数将失去原有含义C.系统不允许用户重新定义标准库函数D.用户调用标准库函数前,不必使用预编译命令将该函数所在文件包括到用户源 文件中51 .函数调用不可以()。A,出现在个表达式中B.出现在执行语句中C.作为个函数的实参D.作为个函数的形参52,以下正确的描述是()。A,函数的定义可以嵌套,函数的调用不可以嵌套B.函数的定义不可以嵌套,函数的调用可以嵌套C,函数的定义和函数的调用均可以嵌套D.函数的定义和函数的调用均不可以嵌套53 .若用数组名作为函数调用的实参,传递给形参的是()。A.数组的首地址B.数组中第一个元素的值C,数组全部元素的值D.数组元素的个数54 .以下错误的描述是()。A.被调用函数中可以不用return语句B,被调用函数中可以用多个return语句C.被调用函数中,如果有返回值,就一定要有return语句D,被调用函数中,个return语句可返回多个值给调用函数55,以下正确的描述是()。A,不允许设置参数的默认值B.设置参数的默认值只能在定义函数时设置C.设置参数的默认值时,应该设置右边的参数D.设置参数的默认值时,应该全部参数都设置56 .采用重载函数的目的是()。A.实现共享B1减少空间C.提高速度D,使用方便,提高可读性57 .将两个字符串连接起来组成一个字符串时,选用()函数。A. strlen() B. strcap() C. strcat () D. strcmp()58 .以下叙述中正确的是()A.使用#define可以为常量定义个名字,该名字在程序中可以再赋另外的值B.使用const定义的常量名有类型之分,其值在程序运行时是不可改变的C,在程序中使用内联函数使程序的可读性变差D.在定义函数时可以在形参表的任何位置给出缺省形参值 59.下面的标识符中,()是文件级作用域。A.函数形参B.语句标号C.外部静态类标识符D.自动类标识符 60.以下叙述不正确的是().A,宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D,宏名必须用大写字母表示61. C+语言的编译系统对宏命令的处理是()。A,在程序运行时进行B.在程序连接时进行C,和C+程序的其它语句同时进行编译D.在对源程序中其它成分正式编译之前进行62 .当#include后面的文件名用双引号括起来时,寻找被包含文件的方式是().A.直接按系统设定的标准方式搜索目录B.先在源程序所在H录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D,搜索当前逻辑盘的所有目录63 .当#include后面的文件名用尖括号括起来时,寻找被包含文件的方式是().A,直接按系统设定的标准方式搜索目录B.先在源程序所在目录搜索,再按系统设定的标准方式搜索目录C.仅仅搜索源程序所在目录D.搜索当前逻辑盘上的所有目录64 .在下面存储类中,()对象的可见性与生存期不一致。A,外部类B.自动类 C.内部静态类 D.寄存器类65 .在下面存储类中,()的对象不是局部变量。A,外部静态类B,自动类 C.函数形参 D.寄存器类 66.关于局部变量,下面说法正确的是().A,定义该变量的程序文件中的函数都可以访问B.定义该变量的函数中的定义处以下的任何语句都可以访问C.定义该变量的复合语句中的定义处以下的任何语句都可以访问D.定义该变量的函数中的定义处以上的任何语句都可以访问 67.文件包含命令中被包含的文件的扩展名()。A.必须是.hB.不能是.hC.可以是.h或.cpp D.必须是.cpp68 .预处理命令在程序中都是以()符号开头的。A. * B. # C. & D. 69 .设 array 为一个数组,则表达式 sizeof (array)/sizeof (array)的结果为A. array数组首地址B. 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, 5 71.下列给字符数组赋初值时,正确的是()D. char si=" abcdef” ;B. char s24=" abed"C. char s33 = "abc" , " xyz” : D. chars44 = 'a' , ' x' , ' s' , ' t' ;72 .设有定义“ static int data56;”,设该数组在静态存储区中的起始地址为十 进制的100,若每个int型数占4个字节,则数组元素data23的地址为(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=" Thank you!"75 .变量s的定义为“char *s=" Hello world!",要使变量p指向s所指向的同 个字符串,则应选取()。A. char *p=s; B. char *p=&s; C. char *p;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,则不正确的语句为()。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指向的字符串为” string",若要输出这个字符串的地址值,则使用()»A. cout<s; B. cout«s; C. cout«&s; D. cout« (void *)s;82 .定义p并使p指向动态空间中的包含30个整数的数组所使用的定义语句为()。A. int *p=new int30;B. int *p=new int(30);C. int *p=new 30;D. *p=new int30;83 .假定p是具有int*类型的指针变量,则给p赋值的正确语句为()。A. p=new int; B. p=new int*; C. p=new int*; D. p=new int10;84 .要使语句“p=new int 10 20;"能够正常执行,p应被事先定义为()。A. int *p; B. int *p; C. int *p20; D. int(*p)20;85 .假定有,4 struct BOOK (char title40; float price; BOOK *book=new BOOK;", 则正确的语句为()。A. strcpy (book->title, " Wang Tao" ); B. strcpy (book, title, " Wang Tao");C. strcpy(*book. title, " Wang Tao" ); D. strcpy(*book)->title, " Wang Tao");86 .假定有 “struct BOOK char title40; float price; ; BOOK *book;",则不正 确的语句为()。A. BOOK *x=new book;B. BOOK x="C+ Programming"", 27. 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 .假定变量a和pa定义为“double a10, *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+l)=24; B. *(b+l)=24; C. *+b=24; D. *+pb=24;91 .假定指针变量p定义为"int *p=new int(lOO) ; w ,要释放p所指向的动态内存, 应使用语句()。A. delete 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定义为“intx=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 .关于封装,下列说法中不正确的是()。A.通过封装,对象的全部属性和操作结合在一起,形成一个整体B.通过封装,个对象的实现细节被尽可能地隐藏起来(不可见)C.通过封装,每个对象都成为相对独立的实体D.通过封装,对象的属性都是不可见的96 .面向对象方法的多态性是指()。A. 个类可以派生出多个特殊类B. 个对象在不同的运行环境中可以有不同的变体C.针对消息,不同的对象可以以适合自身的方式加以响应D, 个对象可以是山多个其他对象组合而成的97 .软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误或不足时 进行相应的软件更新的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性98 .软件产品可被全部或部分地再用于新的应用的能力叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性99 .软件产品与其他软件产品组合成一个整体的难易程度叫做软件的()。A.可维护性B.可复用性C.兼容性D.正确性100 .软件产品准确执行软件需求规格说明书中所规定的任务的能力叫做软件的( )。A.可维护性B.可复用性C.兼容性D.正确性101 .面向对象软件开发中使用的00A表示()。A.面向对象分析B.面向对象设计C,面向対象语言D,面向对象方法102 .面向对象软件开发中使用的00D表示()。A,面向对象分析B.面向对象设计C.面向对象语言D.面向对象方法103 .关于面向对象系统分析,下列说法中不正确的是()。A,术语“面向对象分析”可以用缩写OOA表示B.面向対象分析阶段对问题域的描述比实现阶段更详细C.面向対象分析包括问题域分析和应用分析两个步骤D.面向対象分析需要识别対象的内部和外部特征104 .在个类的定义中,包含有()成员的定义。A.数据 B,函数 C.数据和函数D.数据或函数105 .在类作用域中能够通过直接使用该类的()成员名进行访问。A,私有 B,公用 C.保护 D,任何106 .在关键字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为指向该类対象的一个指针,则 访问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:aOC. AA:a()D. AA: int a0113 .假定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 .在多文件结构的程序中,通常把含有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. 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.可能被改变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,队 列长度为!ength,则队尾(即最后个)元素的位置为()。A. length+1B. first+lengthC. (first+length-l)%MSD. (first+length)%MS129,在个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队 列长度为length,则队尾的后一个位置为()。D. length+1B. first+lengthE. (first+length-l)%MSD. (first+length)%MS130,在个用数组实现的队列类中,假定数组长度为MS,队首元素位置为first,队 列长度为length,则队首的后一个位置为().F. first+1B. (first+l)%MSG. (first-l)%MSD. (first+length)%MS131 .在一个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指 针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队 非空,则进行插入时必须把新结点的地址赋给().A. elemlleadB. elemTailC. elemHead->next 和 elemHeadD. elemTail->next 和 elemTail132 .在个用链表实现的队列类中,假定每个结点包含的值域用elem表示,包含的指 针域用next表示,链队的队首指针用elemHead表示,队尾指针用elemTail表示,若链队 为空,则进行插入时必须把新结点的地址赋给()A. elemHeadB. elemTailC. elemHead 和 elemTail D. elemHead 或 elemTail133 .队列具有()的操作特性。A.先进先出B.先进后出C.进出无序D1进出任意134 .栈具有()的操作特性。A,先进先出B.先进后岀C.进岀无序D,进岀任意135 .对于个类的构造函数,其函数名与类名()»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;”语句时将自动调用该类的()。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. *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 .假定一个类的构造函数为"A(intaa, int bb) a=aa; b=aa*bb;M ,则执行"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 和 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) n t执行"B x(L2),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=0): a(aa) C. AB(int aa): a(aa) D. AB() 152 .假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(A. ABO B. ABO : a(0) C. AB(int aa=O) 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,带参构造函数C.析构函数D.拷贝构造函数157 .当个类对象离开它的作用域时,系统