《面向对象程序设计c++》期末复习题_第1页
《面向对象程序设计c++》期末复习题_第2页
《面向对象程序设计c++》期末复习题_第3页
《面向对象程序设计c++》期末复习题_第4页
《面向对象程序设计c++》期末复习题_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计C+期末复习题面向对象程序设计期末复习题面向对象程序设计C+期末复习题一、单选题1能作为C卄程序的基本单位是(c )A.字符B.语句C.函数D.源程序文件2.存储以下数据,占用存储字节最多的是(d) 0A. 0B C “0”D 0.03设” int a二 1 5,b=26;”,则” cout (a, b); ”的输出结果是(d)。A. 1 5B 2 6, 15C 15, 2 6D. 2645同下列的符号常量定义中,错误的定义是(C )0A. con s t M=10;B. const i nt M二20:C. c o nst char ch;D. const bo o 1 ma

2、rk=true;函数重载是指(a)。A.两个或两个以上的函数取相同的函数名,但形参的个数或类型不同B.两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不C.两个以上的函数名字不同,但形参的个数或类型相同D.两个以上的函数取相同的函数名,并且函数的返回类型相同6以下关于函数模板叙述正确的是(c )oA.函数模板也是一个具体类型的函数B. 函数模板的类型参数与函数的参数是同一个概念C. 通过使用不同的类型参数,函数模板可以生成不同类型的函数D.用函数模板定义的函数没有类型7.42.下列(c )的调用方式是引用调用。A.形参和实参都是变量B.形参是指针,实参是地址值C.形参是引用,实

3、参是变量D.形参是变量,实参是地址值843.为了提高程序的运行速度,可将不太复杂的功能用函数实现,此函数应选择(a) oA.内联函数 B.重载函数C.递归函数 D.函数模板956.采用重载函数的目的是(d )。A.实现共享B.减少空间C.提高速度D.使用方便,提髙可读性10.5&以下叙述中正确的是(b)。A.使用#define可以为常量左义一个名字,该名字在程序中可以再赋另外的值B. 使用const泄义的常量名有类型之分,其值在程序运行时是不可改变的C. 在程序中使用内联函数使程序的可读性变差D.在定义函数时可以在形参表的任何位宜给出缺省形参值11.70.用new运算符创建一个含1 0个元素的

4、一维整型数组的正确语句是 (c )。A i nt *p=ne w a 1 0 1;B int 次 p二 new fl o a t 1 0 :C int *p=new i n t10;D. int *p 二new i nt 10 = l, 2,3t4,512.7 1.下列给字符数组赋初值时,正确的是(a )。A char s 1 二abc def”;B char s24 = abcdM ;C. char s 3 2 3 = “ab c J ” xyzn; D. cha r s44= Q,X , s t t ;面向对象程序设计C+期末复习题13. 73.假定变量m定义为“ intm=7;”,则定义

5、变量p的正确语句为(b )。A. int p=&m;B. i nt *p=&m:C. int &p二*m;D. int *p=m;14. 7 4.假泄k是一个d o uble类型的变量,则关于变量p的正确定义语句为(d ) 6A. double p=&k:B. int *p二& k ;C. d o u b le &p=*k;D. ch a r *p= Th a nk yo u !;15. 82.左义p并使p指向动态空间中的包含30个整数的数组所使用的左义语句 为(a ) oA. int *p=n e w in t 30;B. i nt * p =n e w int (30):C. int *p

6、二new 30;D. *p=new int 30;16. 88. 下列对引用的陈述中不正确的是(c )。A. 每一个引用都是其所引用对象的别划,因此必须初始化B. 形式上针对引用的操作实际上作用于它所引用的对象C. 一旦泄义了引用,一切针对苴所引用对象的操作只能通过该引用间接进行D. 不需要单独为引用分配存储空间17. 89.假泄变量 a 和 pa 定义为“ double a10 , * p a二a; ”,要将 12. 3 5赋值给a中的下标为5的元素,不正确的语句是(d )。A. pa5 =12.3 5; B. a5=12. 35;C. * (pa+5) =12. 3 5; D. *(a 0

7、 +5)=12. 3 5;18. 91.假过指针变量p定义为“int* p=new int(100): ”,要释放p所指向的 动态内存,应使用语句(a )。A. delet e p ;B. de lete *p; C. de 1 e t e &p; D. de 1 et e p;19. 92.假定指针变量p左义为“int*p二new int 30;”,要释放p所指向的动态内存,应使用语句(d )。A . delete p ; B. delete *p; C. d e 1 ete &p;D. del e te p;20. 93.假定变量x定义为int x=5;”,要使r x成为x的引用(别名),

8、r x应定义为(d )。A. int rx=x;B. i n t r x 二&x:C. i nt *rx=&x;D.int & r x二x;21. 95.关于封装,下列说法中不正确的是(d )。扎通过封装,对象的全部属性和操作结合在一起,形成一个整体B. 通过封装,一个对象的实现细节被尽可能地隐藏起来(不可见)C. 通过封装,每个对象都成为相对独立的实体D. 通过封装,对象的属性都是不可见的22. 96.面向对象方法的多态性是指(c )A. 一个类可以派生出多个特殊类B. 一个对象在不同的运行环境中可以有不同的变体C. 针对一消息,不同的对象可以以适合自身的方式加以响应D. 一个对象可以是由多

9、个其他对象组合而成的23. 9 7.软件产品在需求发生变化、运行环境发生变化或发现软件产品本身的错误 或不足时进行相应的软件更新的难易程度叫做软件的(a ) oA.可维护性 B.可复用性C.兼容性D.正确性面向对象程序设计C+期末复习题24.98.软件产品可被全部或部分地再用于新的应用的能力叫做软件的(b )。A.可维护性B.可复用性C.兼容性D.正确性1.在一个类的左义中,包含有(d)成员的定义。25.A.数据B.函数C.数据和函数D.数据或函数105.在类作用域中能够通过直接使用该类的(d )成员名进行访问。A.私有B.公用C.保护D.任何26.10 6.在关键字pub 1 ic后面建义的

10、成员为类的(b )成员。27.A.私有B.公用C.保护D.任何10 7.在关键字pri v ate后而定义的成员为类的(a )成员。28.A.私有B.公用C.保护D.任何1 0 8.假泄AA为一个类,a为该类公有的数据成员,x为该类的一个对象,则访问 x对象中数据成员a的格式为(d)。29.A. x(a)B. xaC. x-aD. x. a109.假定AA为一个类,a 0为该类公有的函数成员,x为该类的一个对象,则访 问x对象中函数成员a()的格式为(b )。A.x. aB. x. a 0C. x aD. x-a()30.110.假泄AA为一个类,a为该类公有的数据成员,px为指向该类对象的一

11、个指针, 则访问px所指对象中数据成员a的格式为(c ) o31.A. px(a)B. pxaC. p x-aD. p x. a111.假立AA为一个类,a为该类私有的数据成员,G etValue 0为该类公有函数成 员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为 (d )。A. x. aB. x. a ()C. x-GetVal u e()D. x . GetV alueO32.112.假逹AA为一个类,int a()为该类的一个成员函数,若该成员函数在类 定义体外定义,则函数头为(a )。A. in t AA: :a()B. int AA :a()C. AA: a

12、0D. AA: :i n t a 033.113.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函 数中访问它,则书写格式为(a )。A. aB. AA:aC. a()D. AA: a ()34.1 14.若需要把一个类外左义的成员函数指明为内联函数,则必须把关键字 (b )放在函数原型或函数头的前面。A. inB. i n lineC. i nL i n eD. InL i n e r35.1 15.在多文件结构的程序中,通常把类的泄义单独存放于(d )中。A.主文件B.实现文件C.库文件D.头文件36.116.在多文件结构的程序中,通常把类中所有非内联函数的泄义单独存放于

13、(b )中。A.主文件B.实现文件C.库文件D.头文件37.117.在多文件结构的程序中,通常把含有mainO函数的文件称为(a)。A.主文件B.实现文件C.程序文件D.头文件38.118.个C卄程序文件的扩展名为(c )。A. hB. . cC. . c ppD. . cp39.119.在C+程序中使用的cin标识符是系统类库中定义的(a )类中的 一个对象。ream4.45.面向对象程序设计C+期末复习题A. istre&mB os t ream C iostreamD.1 20.在C+程序中使用的cout标识符是系统类库中立义的(b )类中 的一个对象。A. is t

14、 r earnB. ost reamC. iostreamD. f stream12 1.假泄AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第 一个参数的类型为(d )。A. in tB. char C. AAD. AA*122.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一 个参数为(c)。A. ab cB. * t h i sC. thisD. this&12 3.假立AA是一个类,“AA& a be (): ”是该类中一个成员函数的原型, 若该函数存在对壮!1 i s赋值的语句,当用x. abc()调用该成员函数后,x的值 (aA.C.).已经被改变B.可

15、能被改变不变D.不受函数调用的影响124.假建AA是一个类,“AA* abc() const;”是该类中一个成员函数 的原型,若该函数返回this值,当用X. a bc()调用该成员函数后,x的值(cA.已经被改变C.不变B可能被改变D.受到函数调用的影响 访问属性。C.125.类中窪义的成员默认为(b )A. pub lieB. priv a tepr o t ectedD.).i end46.12 6.结构中左义的成员默认为( A. publicB p r i v atea )C.访问属性。p r o t ecte dD.riend27.当类中一个字符指针成员指向具有n

16、个字节的存储空间时,它所能存储 字符串的最大长度为(c)。A. nB. n+ 1C. n 1135.对于一个类的构造函数,其函数划与类名(A.完全相同B.基本相同C.136.对于一个类的析构函数,其函数划与类劣(A.完全相同B.完全不同C.D. n -2 a)。不相同C) O只相差一个字符D无关系D.无关系50.51.13 7.类的构造函数是在泄义该类的一个A.成员函数B.数据成员1 3 8.类的析构函数是一个对象被(A.建立B.撤消C.)时被自动调用执行的。对象D.友元函数52.53.54.b赋值139. 一个类的构造函数通常被泄义为该类的(A. 公用B.保护C.私有140. 个类的析构函数

17、通常被泄义为该类的( 公用A. 私有B.保护C.141.假定AB为一个类,则执行“AB )。bA.带参构造函数B.无参构造函数C.cC.)时自动调用的。D.引用)成员。D. 友元)成员。D. 友元x语句时将自动调用该类的拷贝构造函数D.赋值重载函面向对象程序设计C+期末复习题55. 142.假定AB为一个类,则执行“AB x(a, 5);”语句时将自动调用该类的 (a ) oA. 带参构造函数B.无参构造函数C.拷贝构造函数D.赋值重载函数56. 1 4 3.假定AB为一个类,则执行“AB *s=new AB (a, 5); ”语句时得到的一个动态对象为d_。A. sB. s-aC. s. a

18、D. * s57. 144.假建AB为一个类,贝朋行AB rl= r 2 语句时将自动调用该类的 (d )。A. 无参构造函数B.带参构造函数C.赋值重载函数 D.拷贝构造函数58. 1 4 5.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(b )函数中完成。A. 析构B.构造 C.任一成员D.友元59. 1 4 6.当类中的一个整型指针成员指向一块具有n* s izeof (int)大小的存储 空间时,它最多能够存储(a )个整数。A. nB. n +1C. n-1 D. 160. 1 4 7.假泄一个类的构造函数为“A(in t aa, in t bb) a二aa; b二aa*

19、bb;”,则执行“A x(4,5); ”语句后,x.a和x.b的值分别为(c )。A. 4 和 5 B. 5 和 4 C. 4 和 20D. 2 0 和 561. 14 8.假定一个类的构造函数为 “ A (in t aa二 1 , i nt b b =0)a二aa; b=bb;”,则执行“A x(4); ”语句后,x. a和x.b的值分别为(d )A. 1 和 0 B. 1 和 4 C. 4 和 1D. 4 和 062. 149.假泄AB为一个类,贝9( b )为该类的拷贝构造函数的原型说明。A. AB(AB x) ; B. AB (AB &x);C. void AB(A B & x);D.

20、 A B(int x);63. 150.假左一个类的构造函数为 “B(int ax, int bx) : a(ax) , b( b x)”,执行 “B x(l, 2),y(3,4);x 二 y; ”语句序列后 x. a 的值为(c )oA. 1B. 2C. 3D. 464. 151.假立一个类AB只含有一个整型数据成员a,当用户不泄义任何构造函数 时,系统为该类定义的无参构造函数为(d )。A. AB() a = 0 ;B. AB( i n t a a二0) : a (aa) C. AB ( i nt a a ) : a(aa) D. AB () 3 9.假运一个类AB只含有一个整型数据成员a

21、,用户为该类泄义的带参构造函数可以 为( c )。A. AB ()B. AB(): a (0) C. AB (int a a二0) a 二aa: D. AB (in t aa) 65. 1 53.对于任一个类,用户所能定义的构造函数的个数至多为(d )。A. 0B. 1C. 2D.任意个66. 154.对于任一个类,用户所能定义的析构函数的个数至多为(b )。A. 0 B. 1C. 2D.任意个67. 1 55假定AB为一个类,则执行 “AB*px = new ABn; ”语句时将 (a )。A.动态分配一个数组B.动态分配一个对象C.静态分配一个数组D.静态分配一个对象68.面向对象程序设计

22、C+期末复习题15 6.设px是指向一个类对象的指针变量,则执行“del ete px; ”语句时, 将自动调用该类的(A.无参构造函数B.带参构造函数C.析构函数D拷贝构造函数69.70.157.当一个类对象离开它的作用域时,A.无参构造函数B.带参构造函数158.假宦一个类对象数组为An,用该类析构函数的次数为(c8.数体79.系统自动调用该类的(C.拷贝构造函数当离开它立义的作用域时,系统自动调d )o1)析构函数A. 0B.1C. n159.假立AB为一个类,则执行“AB a10: ”语句时调用该类无参 构造函数的次数为(dD. n-1A. 0B.

23、 1C.16 0.假定AB为一个类, 该类无参构造函数的次数为(A. nB. n-1161.假定AB为一个类,构造函数的次数为(A. 2B. 39D. 10则执行“AB*px=new ABn;”语句时调用 a ) C. 1则执行D. 0AB a, b (3),语句时共调用该类a ) oC.4162.假定AB为一个类,则执行 该类构造函数的次数为(b )。A. 3B. 4 C. 516 3.假定AB为一个类,则执行 时共调用该类无参构造函数的次数为(C. 3 则执行“AB *p b )oC2A. 5B. 616 4.假定AB为一个类, 共调用该类构造函数的次数为(A. 0B 1D.“AB5a (

24、2)D. “AB a, d )o,b3, *p4;w语句时共调用9b(2), c 3,*p=&a 语句I).4=new AB(b 2 );” 语句时D. 31 6 5.假泄AB为一个类,p x为指向该类的一个含有n个对象的动态数组的指 针,则执行“dele t epx; ”语句时共调用该类析构函数的次数为(A.0B 1C nD. n+1166.对类对象成员的初始化是通过构造函数中给出的(bA.函数体B.初始化表 C.参数表)实现的。D.初始化表或函表或函数体67.对类中常量成员的初始化是通过构造函数中给出的( A.函数体B.参数表C-初始化表)实现的。D.初始化169.A.

25、 0170.A. 0171.C.类的构造函数可以带有(B1C类的析构函数可以带有(B 1 C.)个参数。D.任意 )个参数。D.任意 C ) O一个类的静态数据成员所表示属性(A.是类的或对象的属性B.只是对象的属性.只是类的属性D.类和友元的属性17 2.类的静态成员的访问控制(d )。只允许被定义为P r iva t e只允许被左义为priv a te或pr o tec t edA.B.面向对象程序设计C+期末复习题C.只允许被定义为publicD.可允许被泄义为 p riv a te、p r o t e c t e d 或 pub I ic84. 173.静态成员函数对类的数据成员访问(

26、b )。A.是不允许的B.只允许是静态数据成员C.只允许是非静态数据成员D.可允许是静态数据成员或非静态数据成员85. 1 74.彼非静态成员函数访问的类的数据成员(a )oA. 可以是非静态数据成员或静态数据成员B.不可能是类的静态数据成员C.只能是类的非静态数据成员D.只能是类的静态数据成员86. 1 7 5.静态数据成员的初始化是在(d )中进行的。A.构造函数B.任何成员函数C.所属类D.全局区87. 17 8. 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明 (a ) oA.需加上类域的限定B.不需加上类域的限定C.类域的限定可加可不加D.不需要任何限定88. 1 7

27、9. 一个类的友元不是该类的成员,与该类的关系密切,所以它(d )。A.有this指针,有默认操作的对象B. 没有this指针,可以有默认操作的对象C. 有thi s指针,不能执行默认操作D. 没有this指针,也就没有默认操作的对象89. 180.在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是(b) OA.作为友元函数重载的1元运算符B.作为成员函数重载的1元运算符C.作为友元函数重载的2元运算符D.作为成员函数重载的2元运算符90. 181.在成员函数中进行双目运算符重载时,其参数表中应带有(b)个参数。A. 0B. 1C. 2D. 391. 18 2 .双目运算符重载为普通

28、函数时,其参数表中应带有(c )个参数。A. 0B. 1 C. 2D. 392. 185.如果表达式a卄中的“ + + ”是作为普通函数重载的运算符,若采用运 算符函数调用格式,则可表示为(c )。A. a. operator+ +()B. ope r ato r +(a)C. op e r a tor+(a 1)D. o p e r ator+ + ( 1 , a)93. 18 6.如果表达式+a中的“+”是作为成员函数重载的运算符,若采用运 算符函数调用格式,则可表示为(d )。A. a. operator+( 1 )B. operato r+ ( a )C. operator+ (a,

29、1)D. a. opera t o r + ()94. 187.关于运算符重载,下列说法正确的是(c )。A.重载时,运算符的优先级可以改变。B. 重载时,运算符的结合性可以改变。C. 重载时,运算符的功能可以改变。D .重载时,运算符的操作数个数可以改变。面向对象程序设计C+期末复习题95. 189. 一个程序中数组a和变量k定义为“int a510,k;”,且程序中 包含有语句“a(2, 5) =+k* 3 ; ”,则此语句中肯泄属于重载操作符的是(a )。A. ( )B. =C. +D. *96. 190.假泄K是一个类名,并有定义“K k ; int j;”,已知K中重载了操 作符()

30、,且语句j=k(3);”和“k ( 5)二99 ;”都能顺利执行,说明该操作符函 数的原形只可能是(c )。A. K operator ( ) (int);B. i nt op e rat o r ( ) (it&);C. i nt & o perat or( ) (int);D. K &op e rat o r () (int):97. 195.关于插入运算符V的重载,下列说法不正确的是(b )。A.运算符函数的返回值类型是ostr e a m &。B. 重载的运算符必须泄义为类的成员函数。C. 运算符函数的第一个参数的类型是ostr亡am &。D. 运算符函数有两个参数。98. 196.从

31、一个基类派生岀的各个类的对象之间(c )。A.共享所有数据成员,每个对象还包含基类的所有属性B 共享部分数据成员,每个对象还包含基类的所有属性C. 不共享任何数据成员,但每个对象还包含基类的所有属性D. 共享部分数搦成员和函数成员99. 197.如果是类B在类A的基础上构造,那么,就称(b )。A. 类A为基类或父类,类B为超类或子类B. 类A为基类、父类或超类,类B为派生类或子类C. 类A为派生类,类B为基类D. 类A为派生类或子类,类B为基类、父类或超类100. 198. C+的继承性允许派生类继承基类的(c)。A.部分特性,并允许增加新的特性或重泄义基类的特性B. 部分特性,但不允许增加

32、新的特性或重圮义基类的特性C. 所有特性,并允许增加新的特性或重左义基类的特性D. 所有特性,但不允许增加新的特性或重宦义基类的特性101. 19 9.派生类的成员函数可以直接访问基类的(b )成员。A.所有B.公有和保护C.保护和私有D.私102. 2 0 0.对于公有继承,基类的公有和保护成员在派生类中将(d ) 成员。A.全部变成公有B.全部变成保护C.全部变成私有D.仍然相应保持为公有和保护103. 2 0 1.对于公有继承,基类中的私有成员在派生类中将(c )。A.能够直接使用成员名访问B.能够通过成员运算符访问C.仍然是基类的私有成员D.变为派生类的私有成员104. 2 0 2 .

33、当保护继承时,基类的(b )在派生类中成为保护成员,在类作用 域外不能够通过派生类的对象来直接访问该成员。A.任何成员B.公有成员和保护成员C.保护成员和私有成员D.私有成员105. 2 04.建立包含有类对象成员的派生类对象时,自动调用构造函数的执行顺 序依次为(c )的构造函数。A.自己所属类、对象成员所属类、基类面向对象程序设计C+期末复习题B. 对象成员所属类、基类、自己所属类C. 基类、对象成员所属类、自己所属类D. 基类、自己所属类、对象成员所属类106. 2 0 5.当派生类中有和基类一样需字的成员时,一般来说,(b)。扎将产生二义性B.派生类的同名成员将覆盖基类的成员C. 是不

34、能允许的D.基类的同名成员将覆盖派生类的成员107. 2 06. C+中的虚基类机制可以保证:(d )。A.限定基类只通过一条路径派生出派生类B. 允许基类通过多条路径派生出派生类,派生类也就能多次继承该基类C. 当一个类多次间接从基类派生以后,派生类对象能保留多份间接基类的成 员D. 当一个类多次间接从基类派生以后,其基类只被一次继承108. 207.下列对派生类的描述中错误的说法是:(d )oA.派生类至少有一个基类B. 派生类可作为另一个派生类的基类C. 派生类除了包含它直接泄义的成员外,还包含英基类的成员D. 派生类所继承的基类成员的访问权限保持不变二、填空题1. 5.用于输出表达式值

35、的标准输出流对象是couto2. 6.用于从键盘上为变量输入值的标准输入流对象是ci n。3. 9.当执行cin语句时,从键盘上输入每个数据后必须接着输入一个空白 符,然后才能继续输入下一个数据。4. 22.当执行co u t语句输出endl数据项时,将使C+显示输出屏幕上的光标从当前位苣移动到下一行的开始位巻。5. 53. 设 enum P r i n t st a t u s r e ady二2, busy, e rro r ; 贝lj co u t bu sy的输出结果是3o6. 8 8.重载一个函数的条件是:该函数必须在参数的个数或参数的类型上与其它同名函数有所不同。7. 91.定义一

36、个函数模板要用到的第一个修饰符是tem p late。8. 94. 已知 i nt cu b in ( i nt n) r et u r n n*n*n;和 d oub 1 e c u b i n (double n) re t urn n *n* n ;是一个函数模板的两个实例,假泄类型参数 用T表示,则该函数模板的定义是_ template T c ub i n(T n) re t ur n n* n*n ;_。9. 97.如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的右 面部分。10. 132.若要把整型变量y泄义为x的引用,则所使用的定义语句为_int y=x;_11.

37、133.若y是x的引用,则对y的操作就是对%_的操作。12. 134. 若y是X的引用,则y和x的值相同,即为变_x的地址。13. 13 5.执行int p二new int操作得到的一个动态分配的整型对象为_*p _o14. 137. 执行chH *p=new cherC f )操作后,p所指向的数据对象的值为15. 13& 执行new charLm n操作时的返回值的类型为_ch a r(*) n _。16. 139.执行delete p_操作将释放由p所指向的动态分配的数据空间。17. 14 9已知变量a定义为“int圧5;J要使说成为a的引用,则2应定义为面向对象程序设计C+期末复习题_

38、 i n t ra=a ;_18. 1 5 5.对象将苴大部分实现细肖隐藏起来,这种机制称为_封装19. 15 6.基类和派生类的关系称为_继承_。20. 160.如果一个派生类的基类不止一个,则这种继承称为多继承o21. 162.C+支持两种多态性:_编译_时的多态性和_运行时的多态性。22. 163.在C+中,编译时的多态性是通过一重载_实现的,而运行时的多态性则是 通过虚函数一实现的。23. 172.若在类的左义体中给出了一个成员函数的完整泄义,则该函数属于内联_ 函数。24. 173.若在类的泄义体中只给出了一个成员函数的原型,则在类外给岀完整泄义 时,貝函数名前必须加上类名和两个冒号

39、分隔符。25. 17 5. 若要把类外立义的成员函数规泄为内联函数,则必须把inlin e_关 键字放到函数原型或函数头的前而。26. 17 6 .把一个类的立义体和所有成员函数的左义体所构成的程序范围叫做该类的 作用域27. 177.假定AA是一个类,“AA* ab c (); ”是该类中一个成员函数的原型,则 在类外定义时的函数头为_ AA* AA: :abc()。28. 1 7 8.成员函数的参数表在类作用域中,成员函数的返回值类型_不在一类作用域 中。29. 17 9.为了避免在调用成员函数时修改对彖中的任何数据成员,则应在左义该成 员函数时,在函数头的后而加上_c onst_关键字。

40、30. 180.若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函 数头的后而加上c o ns t _关键字。31. 183.内联函数的定义模块与_类左义_模块必须放在同一个文件中。32. 1 84.假定AA是一个类,“AA* abc 0const:是该类中一个成员函数的原型, 在该函数体中(能够/不能够)_不能够_向* thi s或其成员赋值。33. 201. 一个类的构造_函数实现对该类对象的初始化功能。34. 2 0 2.个类的一析构函数通常用于实现释放该类对象中指针成员所指向的动 态存储空间的任务。35. 2 03.当用户为一个类泄义有一构造函数_时,则系统不会为该类再

41、自动生成一个默 认构造函数。36. 204.假眾用户没有给一个名为AB的类左义构造函数,则系统为其立义的构造函数为 _AB()_37. 2 0 5.假立用户没有给一个名为AB的类左义析构函数,则系统为其立义的析构函数为_。38. 2 06.泄义类动态对象数组时,其元素只能靠自动调用该类的无参构造函数_ 来进行初始化。39. 207.在一个类中龙义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另 一个对象时,能够避免这两个对象的同一指针同时指向同一块_动态存储空间40. 2 0 8.为了释放类对象中指针成员所指向的动态存储空间,则需要为该类泄义 析构函数o41. 2 0 9. 假定AB为一

42、个类,则执行“AB a 1 0; ”语句时,系统自动调用 该类构造函数的次数为_ 1 0_o42. 2 10.假立一个类对象数组为AN,当离开它的作用域时,系统自动调用该类析构 函数的次数为_N_。43. 211.对类中对象成员的初始化是通过在构造函数中给出的_初始化表来实现面向对象程序设计C+期末复习题的。44. 213.对类中引用成员的初始化只能通过在构造函数中给出的_初始化表来实现。45. 214.对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来 实现,也可以通过构造函数中的_函数体_来实现。46. 215.假泄要把aa泄义为AB类中的一个常量整数型数据成员,则泄义语句为

43、_ const i nt aa;_o47. 216.假泄要把aa泄义为A B类中的一个引用整数型数据成员,则泄义语句为_ i nt a a ;。48. 217.假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数aa对英进行初始化,则该类的构造函数的泄义为_ A B ( i nt a a) : a(aa) ;_o49. 218.假泄AB类中只包含一个整型数据成员a ,并且它是一个引用成员,若利用 引用参数aa对其进行初始化,则该类的构造函数的泄义为_ AB(int aa) :a( a a);_。50. 219.假定指针p指向一个动态分配的类对象,则当执行de 1 ete p;

44、”语句时, 在释放P所指向的动态存储空间之前将自动调用该类的析构函数51. 2 20.假左用户为类AB泄义了一个构造函数“ABGnt aa) a二aa;”,则系统(会/不刽不会为该类自动定义一个无参构造函数” A B () o52. 221. 假泄用户为类AB宦义了一个构造函数“ AB(int a a, char *bb二NU LL):a (aa) , b(bb)”,则该类中至少包含有_2_个数据成员。53. 222.假左用户为类AB定义了一个构造函数“ AB(int aa) a=aa: ”, 该构造函数实现对数据成员a_的初始化。54. 223.假定用户为类AB泄义了一个构造函数“AB( i

45、 nt aa二0 ) : a (a a ) ( ”, 则定义该类的对象时,可以有2种不同的定义格式。55. 224 .假定用户为类AB定义了一个构造函数“ AB(int a a ) :a (aa) ”,则定义 该类的对象时,有_1_种定义格式。56. 2 25.假定用户只为类AB左义了一个构造函数“ AB(int aa, i n t bb=0)a二aa; b二bb;”,则定义该类的对象时,其实参表中至多带有2一个实参。57. 227.假泄用户为类AB建义了一个构造函数“AB(int a a二0,i nt bb=0) a=a a; b=bb:则泄义该类的对象时,可以有3种不同的立义格式。58.

46、22&假定用户只为类AB定义了一个构造函数“AB() :a(0),b(0) ”,则定义该 类对象x的泄义语句“AB x(); ”是错误_(正确/错误)的。59. 231.假泄AB为一个类,则类左义体中的“AB(AB x); ”语句为该类拷贝构造函 数的原型语句。60. 2 3 2.假定AB为一个类,则该类的拷贝构造函数的函数头为_ AB(AB)_O61. 23 3 .假龙AB为一个类,该类中含有一个指向动态数组空间的指针成员pa,则在 该类的析构函数中应该包含有一条_ delete pa;_语句。62. 234.静态成员函数只能_访问类的静态数据成员,不能访问类的非静态数据成 员。63. 23

47、5.静态数据成员必须在所有函数的定义体外进行初始化_。64. 23 6. 个类的成员函数也可以成为列一个类的友元函数,这时的友元说明必须 在函数名前加上_类域_的限定065. 237.重载运算符时,该运算符的_优先级_、结合性以及操作符的个数不允许改 变。面向对象程序设计C+期末复习题66. 2 38. 一个单目运算符作为类的成员函数重载时有_0_个参数:如果作为独立函 数重载,则有1_个参数。67. 239. 一个双单目运算符作为类的成员函数重载时有_1_个参数;如果作为独立函 数重载,则有_2个参数。68. 241.作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算 符有_

48、2个操作数。69. 242.在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类 的_成员函数_。70. 243. 重载插入运算符时,英运算符函数的返回值类型应当是一 ostr e a m71. 244.重载抽取运算符时,其运算符函数的返回值类型应当是_istream72. 249.派生类的成员函数可以直接访问基类的共有和保护成员,不能直接 访问基类的_私有成员。73. 250.当保护继承时,基类的公有和保护_成员在派生类中成为保护成员,派生 类对象不能直接访问基类的一任何_成员。74. 251.在定义一个派生类时,使用private 关键字或者不显式地使用它则 表示为私有_继承

49、。75252.若多个基类及英派生类中都左义了同名函数成员,要访问相应函数时,就需 要在函数名前加上类名和类区分符。76. 25 3.若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以 _虚基类的方式直接继承它。77. 254.引进虚基类的根本目的是为了消除二义性_。78. 255.在每个成员函数中,隐含的第一个参数的参数名为this-三. 程序填充1.21.已知一维数组类ARRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符要对下标是否越界进行检査。cl a ss A RRAY。i nt *v;指向存放数组数据的空间i n t s;/数组大小pub 1 ic:A R

50、RAY (in t a , i n t n); ARRAY0 dele t e v;int sizeO re t urn s; i n t & oper a tor Hint n);; op e rat or (int n) / 的运算符成员函数建义f (n0 I ) c e r r 下标越界!; e xit ( 1 );re t urn (3):(1)2.2 2.已知一维数组类ARRAY的定义如下,构造函数的作用是把参数n的值面向对象程序设计C+期末复习题赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向 的数组。class ARRAY4nt *v;指向存放数组数据的空

51、间-in t s;/数组大小p ubl i c:oARRAY(int a, int n):z ARR A Y() delete v ; in t sizeO return s;i n t& operator】(i n t n);ARRAY (int a, int n)辻(n=0 ) v=NU L L ; s =0; retu r n;s=n;f o r (int i = 0 ; i n; i卄)(1)(2)(3)3. 23.下面是一维数组类ARRAY的定义,ARRAY与普通一维数组区别是:(Q用0而不是进行下标访问,(2)下标从1而不是从0开始,(c)要对下标是 否越界进行检査。class AR RAY nt * v; /指向存放数组数据的空间4nt s;/数组大小pub 1 i c:4RRAY( i nt a t i nt n);ARRAYO de 1 et e v;int si z e () retur n s;i nt& ope r a t or () (int n ); ; ( 1 ) op e rat o r 0 (int n)/0的运算符函数定义if() cerr下标越界!: e x it (1); retu

温馨提示

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

评论

0/150

提交评论