面向对象程序设计c期末复习题可编辑范本

上传人:无*** 文档编号:106982077 上传时间:2022-06-14 格式:DOC 页数:33 大小:134.54KB
返回 下载 相关 举报
面向对象程序设计c期末复习题可编辑范本_第1页
第1页 / 共33页
面向对象程序设计c期末复习题可编辑范本_第2页
第2页 / 共33页
面向对象程序设计c期末复习题可编辑范本_第3页
第3页 / 共33页
点击查看更多>>
资源描述
面向对象程序设计期末复习题一、单选题1. 能作为C+程序的基本单位是(c )。 A. 字符 B。 语句 C. 函数 D.源程序文件2. 存储以下数据,占用存储字节最多的是(d )。 A.0 B. C. “0” D。 。03. 设” a=5,b=26;”,则”cot D。xa()30. 0。 假定A为一个类,为该类公有的数据成员,px为指向该类对象的一个指针,则访问p所指对象中数据成员的格式为( c )。A。 px() B.pxa C。 xa D.。a31. 111。 假定AA为一个类,a为该类私有的数据成员,GeVae()为该类公有函数成员,它返回a的值,x为该类的一个对象,则访问x对象中数据成员a的格式为( d ). A。 x.a .() C. xGVaue() . x。Gtalu()32. 112。假定AA为一个类,nt a()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为( )。 A。 in AA::a() 。 it AA:a() C。AA::a() D。A::int a()33. 113. 假定A为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(a )。A. a .A:a C. a() A::a()34. 14若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字( )放在函数原型或函数头的前面。A. in B。 inln C. inLine D nLier35. 15.在多文件结构的程序中,通常把类的定义单独存放于( )中。 .主文件 B。实现文件 C。库文件 . 头文件36. 1。 在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于( )中。 A. 主文件 。实现文件 C 库文件 D.头文件37. 17。 在多文件结构的程序中,通常把含有main()函数的文件称为(a ). A. 主文件 。 实现文件 C。 程序文件 D。 头文件38. 。 一个C+程序文件的扩展名为( )。A。 。h . .c . 。cpp D.。cp39. 119. 在+程序中使用的cn标识符是系统类库中定义的( a )类中的一个对象。 A。 istrea B。 ostream C ostram 。 ftream40. 120。 在C+程序中使用的ut标识符是系统类库中定义的( b )类中的一个对象。 A。 istem B.osteam C.otra D。 fstrea41. 11.假定AA是一个类,a是该类的一个成员函数,则参数表中隐含的第一个参数的类型为( d )。 A。 it B。ar AA D。 AA42. 12. 假定AA是一个类,ac是该类的一个成员函数,则参数表中隐含的第一个参数为( )。 A. bc B。 *ths C。 this D. this&43. 23.假定AA是一个类,“A&ac();是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x。bc()调用该成员函数后,x的值( a )。 A.已经被改变 B。可能被改变 C 不变 D不受函数调用的影响44. 124。 假定是一个类,“AAc()cost;”是该类中一个成员函数的原型,若该函数返回tis值,当用。ac()调用该成员函数后,x的值( c )。 。 已经被改变 B。 可能被改变 . 不变 。 受到函数调用的影响45. 125.类中定义的成员默认为( b )访问属性。 。 pbli .private C。 protected D。 fd46. 26. 结构中定义的成员默认为( )访问属性. A。public B. pvate C. poected D。 end47. 127。当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为( c )。 A n B n+ C. n- 48. 135。 对于一个类的构造函数,其函数名与类名( a )。 A。 完全相同 B. 基本相同 C. 不相同 D。无关系49. 36 对于一个类的析构函数,其函数名与类名( c )。 A。完全相同 B. 完全不同 C。 只相差一个字符 D. 无关系50. 137。 类的构造函数是在定义该类的一个( )时被自动调用执行的。 A成员函数 . 数据成员 C。 对象 D。友元函数51. 3. 类的析构函数是一个对象被( b )时自动调用的。 A. 建立 B。 撤消 C. 赋值 D。 引用52. 13. 一个类的构造函数通常被定义为该类的( )成员。 A。 公用 B. 保护 C. 私有 D. 友元53. 10.一个类的析构函数通常被定义为该类的( c )成员。 A。 私有 B. 保护 C。 公用 。 友元54. 41 假定为一个类,则执行“B x;”语句时将自动调用该类的( b )。 A. 带参构造函数 .无参构造函数 C. 拷贝构造函数 D。 赋值重载函数55. 142 假定AB为一个类,则执行“ABx(a,);”语句时将自动调用该类的(a )。 A。 带参构造函数 B。 无参构造函数 C。 拷贝构造函数 D。 赋值重载函数56. 143.假定AB为一个类,则执行 “AB *s=new B(a,5);”语句时得到的一个动态对象为_d_ A. s B sa C。 s。a D。 *57. 144.假定AB为一个类,则执行“AB r2;”语句时将自动调用该类的( d)。 A。无参构造函数 . 带参构造函数 . 赋值重载函数 D。 拷贝构造函数58. 14 若需要使类中的一个指针成员指向一块动态存储空间,则通常在( b )函数中完成。 A。 析构 。 构造 C任一成员 D。 友元59. 1. 当类中的一个整型指针成员指向一块具有n*szf(int)大小的存储空间时,它最多能够存储(a )个整数。 A B。n+1 C. n1 D.160. 147。 假定一个类的构造函数为“A(nt a, int bb) a=aa; b=aa;”,则执行“A x(,5);语句后,x。和.b的值分别为( ) A。4和5 B。 5和 。 和20 D。 2和561. 14. 假定一个类的构造函数为 “(nt aa=, int bb=) aaa; b=bb;”,则执行“ (4);”语句后,x.a和x。b的值分别为( d ). 和0 B. 1和 C. 4和1 D。4和062. 19。 假定AB为一个类,则( b )为该类的拷贝构造函数的原型说明。A。B(AB x); B.AB(AB ); C。 oid AB(AB& x); D。 A(ntx);63. 1 假定一个类的构造函数为“B(int ax, int bx): a(a), b(bx) ,执行 “ x(,2),y(,4);;语句序列后x。的值为( c). . B。 2 。 。464. 15.假定一个类A只含有一个整型数据成员,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(d )。AAB() ; B.AB(int a=0):a(aa) C。AB(int a): a(a) D。AB() 。 假定一个类B只含有一个整型数据成员,用户为该类定义的带参构造函数可以为( c )。 A. () B。 B(): a(0)C。A(int aa=0) a=aa; D。AB(int aa)65. 153。 对于任一个类,用户所能定义的构造函数的个数至多为( d )。 A 0 B。 1 C。 D。 任意个66. 154。 对于任一个类,用户所能定义的析构函数的个数至多为( b ). 。 0 B。 1 C. 2 D。 任意个67. 15。 假定AB为一个类,则执行“B =newB;语句时将( a )。 A。动态分配一个数组 B。 动态分配一个对象 C。 静态分配一个数组 D. 静态分配一个对象68. 5 设p是指向一个类对象的指针变量,则执行 “dlete px;”语句时,将自动调用该类的( c ). A。 无参构造函数 B. 带参构造函数 C。 析构函数 D。 拷贝构造函数69. 157。 当一个类对象离开它的作用域时,系统自动调用该类的( d )。 A. 无参构造函数 B.带参构造函数 C。 拷贝构造函数 D。 析构函数70. 158。假定一个类对象数组为n,当离开它定义的作用域时,系统自动调用该类析构函数的次数为( c )。 A。 0 B.1 C。 n D。 n171. 159假定AB为一个类,则执行“ABa0;”语句时调用该类无参构造函数的次数为( d ). A. 0 B. 1 C 9 D. 172. 160.假定A为一个类,则执行 “AB *pe An;语句时调用该类无参构造函数的次数为( a ). A B。 n1 . 1 。 73. 161。 假定AB为一个类,则执行 “AB a, b(3), *p;”语句时共调用该类构造函数的次数为( a)。 A。 B. 3 . D。74. 162. 假定AB为一个类,则执行 “ABa(2), 3, *4;”语句时共调用该类构造函数的次数为( b )。 A。 3 B.4 C。 5 D. 975. 16。 假定AB为一个类,则执行“ABa, b(2),c, =&;语句时共调用该类无参构造函数的次数为( d ). . 5 B。 C。 3 D。 476. 64 假定AB为一个类,则执行“ABp=ew AB(1,2);”语句时共调用该类构造函数的次数为( b ). A。 B。 1 C。 D. 77. 16. 假定A为一个类,px为指向该类的一个含有个对象的动态数组的指针,则执行“delete x;”语句时共调用该类析构函数的次数为( c )。 。 0 B。 。 n D。 n+178. 166.对类对象成员的初始化是通过构造函数中给出的( b )实现的。 . 函数体 . 初始化表 C。 参数表 . 初始化表或函数体79. 67。 对类中常量成员的初始化是通过构造函数中给出的( )实现的。 A。函数体 B。 参数表 C。初始化表 。 初始化表或函数体80. 19.类的构造函数可以带有( c )个参数。 A. 0 B。 1 C. 。 任意81. 170。 类的析构函数可以带有( )个参数。 A.0 1 C. 2 .任意82. 171。 一个类的静态数据成员所表示属性( c ) A。 是类的或对象的属性 。 只是对象的属性 。只是类的属性 D。类和友元的属性 83. 72。类的静态成员的访问控制( d ). A。 只允许被定义为pivae B。 只允许被定义为pva或ptecte C。 只允许被定义为public D。可允许被定义为prive、potected或public84. 1. 静态成员函数对类的数据成员访问( b ) A。是不允许的 B. 只允许是静态数据成员 C 只允许是非静态数据成员 D. 可允许是静态数据成员或非静态数据成员85. 74。 被非静态成员函数访问的类的数据成员( )。 A。 可以是非静态数据成员或静态数据成员 B。 不可能是类的静态数据成员 C。只能是类的非静态数据成员 D。 只能是类的静态数据成员86. 75。 静态数据成员的初始化是在( )中进行的。 A。 构造函数 B. 任何成员函数 所属类 D.全局区87. 17。 一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明( a ). A 需加上类域的限定 B。 不需加上类域的限定 C。 类域的限定可加可不加 D。 不需要任何限定88. 79。 一个类的友元不是该类的成员,与该类的关系密切,所以它( d ). A 有tis指针,有默认操作的对象 . 没有this指针,可以有默认操作的对象 C。有ts指针,不能执行默认操作 。 没有this指针,也就没有默认操作的对象89. 18。 在重载一个运算符时,其参数表中没有任何参数,这表明该运算符是( b )。 A 作为友元函数重载的1元运算符 B。 作为成员函数重载的1元运算符 C。 作为友元函数重载的2元运算符 作为成员函数重载的2元运算符90. 181。 在成员函数中进行双目运算符重载时,其参数表中应带有(b)个参数。 A 0 B。 C.2 D. 391. 182 双目运算符重载为普通函数时,其参数表中应带有( )个参数。 A。 0 B。1 C。 2 D. 392. 18。 如果表达式a+中的“”是作为普通函数重载的运算符,若采用运算符函数调用格式,则可表示为( c )。 A。 a。operaor+() . perat+(a) C. oerator+(a,1) D.opeatr+(1,a)93. 86。 如果表达式+中的“+”是作为成员函数重载的运算符,若采用运算符函数调用格式,则可表示为()。 A. a。oaor+(1) B。 opator+(a) 。 operator+(a,1) D。 aopeato+()94. 187. 关于运算符重载,下列说法正确的是(c )。 A. 重载时,运算符的优先级可以改变。 重载时,运算符的结合性可以改变。 C.重载时,运算符的功能可以改变。 .重载时,运算符的操作数个数可以改变。95. 89。一个程序中数组和变量k定义为“it a51,;,且程序中包含有语句“a(2,5)+k*3;”,则此语句中肯定属于重载操作符的是(a )。 。 ( ) B。= C。+ *96. 19。假定K是一个类名,并有定义“K ; inj;”,已知K中重载了操作符 ( ),且语句“j=k(3);”和“k(5)=99;都能顺利执行,说明该操作符函数的原形只可能是( )。 。 operator ( ) (int); B。 in perator( )(nt&); 。 nt& oeraor( )(in); D。 K opator( )(nt);97. 15.关于插入运算符cubi(Tn)urnn*n*n;_。9. 7.如果一个函数中有多个默认参数,则默认参数必须全部处在形参表的_右面_部分10. 132。若要把整型变量定义为的引用,则所使用的定义语句为_inty=x;_。11. 133。若y是x的引用,则对y的操作就是对x_的操作。12. 34.若是x的引用,则y和x的值_相同_,即为变量_x的地址。13. 13.执行int=nwit操作得到的一个动态分配的整型对象为_*_。14. 137.执行har*p=newchar()操作后,p所指向的数据对象的值为_a_。15. 138.执行nharmn操作时的返回值的类型为_char(*)n_。16. 1.执行dlet p_操作将释放由p所指向的动态分配的数据空间。17. 149.已知变量a定义为“inta=5;”,要使ra成为a的引用,则r应定义为_inta=a;_。18. 155。对象将其大部分实现细节隐藏起来,这种机制称为_封装_。19. 56.基类和派生类的关系称为_继承_。20. 160。如果一个派生类的基类不止一个,则这种继承称为_多继承_。21. 1.C+支持两种多态性:_编译_时的多态性和_运行_时的多态性。22. 1在C+中,编译时的多态性是通过重载_实现的,而运行时的多态性则是通过_虚函数_实现的。23. 172.若在类的定义体中给出了一个成员函数的完整定义,则该函数属于_内联_函数。24. 1。若在类的定义体中只给出了一个成员函数的原型,则在类外给出完整定义时,其函数名前必须加上_类名_和两个冒号分隔符。25. 175.若要把类外定义的成员函数规定为内联函数,则必须把_nne_关键字放到函数原型或函数头的前面.26. 176。把一个类的定义体和所有成员函数的定义体所构成的程序范围叫做该类的_作用域_。27. 177。假定A是一个类,“AA*abc();”是该类中一个成员函数的原型,则在类外定义时的函数头为A*A::ac()_。28. 178.成员函数的参数表在类作用域中,成员函数的返回值类型_不在_类作用域中。29. 19。为了避免在调用成员函数时修改对象中的任何数据成员,则应在定义该成员函数时,在函数头的后面加上_ont_关键字。30. 180若只需要通过一个成员函数读取数据成员的值,而不需要修改它,则应在函数头的后面加上_cnst_关键字。31. 183.内联函数的定义模块与_类定义模块必须放在同一个文件中。32. 184.假定AA是一个类,“A*ab()const;”是该类中一个成员函数的原型,在该函数体中(能够不能够)_不能够向*his或其成员赋值。33. 20一个类的_构造_函数实现对该类对象的初始化功能.34. 202.一个类的_析构_函数通常用于实现释放该类对象中指针成员所指向的动态存储空间的任务.35. 203.当用户为一个类定义有构造函数_时,则系统不会为该类再自动生成一个默认构造函数。36. 20.假定用户没有给一个名为A的类定义构造函数,则系统为其定义的构造函数为_AB()_。37. 20假定用户没有给一个名为AB的类定义析构函数,则系统为其定义的析构函数为B()。38. 26定义类动态对象数组时,其元素只能靠自动调用该类的_无参构造函数_来进行初始化。39. 207.在一个类中定义拷贝构造函数的目的,是为了当利用该类的一个对象初始化另一个对象时,能够避免这两个对象的同一指针同时指向同一块_动态存储空间。40. 208为了释放类对象中指针成员所指向的动态存储空间,则需要为该类定义_析构函数_。41. 209.假定B为一个类,则执行“B1;”语句时,系统自动调用该类构造函数的次数为_1_。42. 210.假定一个类对象数组为AN,当离开它的作用域时,系统自动调用该类析构函数的次数为_N_。43. 11对类中对象成员的初始化是通过在构造函数中给出的_初始化表_来实现的。44. 13对类中引用成员的初始化只能通过在构造函数中给出的初始化表来实现。45. 2.对类中一般数据成员的初始化既可以通过在构造函数中给出的初始化表来实现,也可以通过构造函数中的_函数体_来实现。46. 25.假定要把a定义为AB类中的一个常量整数型数据成员,则定义语句为_constintaa;_.47. 26.假定要把aa定义为AB类中的一个引用整数型数据成员,则定义语句为_intaa;。48. 17.假定AB类中只包含一个整型数据成员a,并且它是一个常量成员,若利用参数a对其进行初始化,则该类的构造函数的定义为_AB(inta):a(aa);_。49. 2.假定B类中只包含一个整型数据成员,并且它是一个引用成员,若利用引用参数a对其进行初始化,则该类的构造函数的定义为_(intaa):a(a);_。50. 21.假定指针p指向一个动态分配的类对象,则当执行“deetep;”语句时,在释放p所指向的动态存储空间之前将自动调用该类的_析构函数_.51. 20.假定用户为类A定义了一个构造函数“AB(taa)a=aa;,则系统(会不会)_不会_为该类自动定义一个无参构造函数”AB()。52. 221.假定用户为类AB定义了一个构造函数“AB(intaa,char*bb=NL):a(aa),b(b)”,则该类中至少包含有2_个数据成员。53. 2.假定用户为类AB定义了一个构造函数“A(inaa)=aa;”,该构造函数实现对数据成员_a_的初始化.54. 3假定用户为类B定义了一个构造函数“(ntaa0):a(aa)”,则定义该类的对象时,可以有_2_种不同的定义格式。55. 2.假定用户为类A定义了一个构造函数“AB(inta):(aa)”,则定义该类的对象时,有1种定义格式。56. 5假定用户只为类AB定义了一个构造函数“AB(ntaa,intbb=0)a=aa;b=;,则定义该类的对象时,其实参表中至多带有_2个实参57. 2.假定用户为类B定义了一个构造函数“AB(ta,intbb=0)=;bbb;,则定义该类的对象时,可以有_3_种不同的定义格式。58. 22.假定用户只为类AB定义了一个构造函数“A():(),b()”,则定义该类对象的定义语句“ABx();”是_错误_(正确/错误)的。59. 231.假定AB为一个类,则类定义体中的“AB(ABx);”语句为该类_拷贝构造函数_的原型语句。60. 232.假定B为一个类,则该类的拷贝构造函数的函数头为_AB()_。61. 233假定为一个类,该类中含有一个指向动态数组空间的指针成员a,则在该类的析构函数中应该包含有一条_detpa;_语句。62. 24。静态成员函数只能访问类的静态数据成员,不能访问类的非静态数据成员。63. 2。静态数据成员必须在所有函数的定义体外进行初始化_。64. 236.一个类的成员函数也可以成为另一个类的友元函数,这时的友元说明必须在函数名前加上_类域_的限定。65. 2。重载运算符时,该运算符的_优先级_、结合性以及操作符的个数不允许改变。66. 38.一个单目运算符作为类的成员函数重载时有_0_个参数;如果作为独立函数重载,则有_个参数。67. 239.一个双单目运算符作为类的成员函数重载时有个参数;如果作为独立函数重载,则有_2_个参数。68. 241。作为类的成员函数重载一个运算符时,参数表中只有一个参数,说明该运算符有_2_个操作数。69. 242。在重载一个单目运算符时,参数表中没有参数,说明该运算符函数只能是类的_成员函数_。70. 243.重载插入运算符时,其运算符函数的返回值类型应当是_ostream。71. 24.重载抽取运算符时,其运算符函数的返回值类型应当是_isream_。72. 29派生类的成员函数可以直接访问基类的_共有和保护_成员,不能直接访问基类的_私有_成员.73. 50.当保护继承时,基类的_公有和保护_成员在派生类中成为保护成员,派生类对象不能直接访问基类的_任何_成员。74. 21.在定义一个派生类时,使用_v_关键字或者不显式地使用它则表示为_私有_继承.75. 52.若多个基类及其派生类中都定义了同名函数成员,要访问相应函数时,就需要在函数名前加上类名_和类区分符。76. 23.若要保证一个公共的基类在派生类中只产生一个基类子对象,则必须都以_虚基类_的方式直接继承它。77. 254引进虚基类的根本目的是为了消除_二义性_。78. 255。在每个成员函数中,隐含的第一个参数的参数名为_thi_。三、程序填充1. 21已知一维数组类RRAY的定义如下,ARRAY与普通一维数组区别是:其重载的运算符 要对下标是否越界进行检查。class RY int *v; /指向存放数组数据的空间t s; /数组大小 ulic: ARRAY(nt a, int ); ARRAY()dlet ; in sz() retrn s;int& ear(in n); ;_(1)_rar(in n) / 的运算符成员函数定义f(0|_(2)_)ce下标越界!”; xit(1); rturn _(3)_;(1)()()2. 22。 已知一维数组类ARRY的定义如下,构造函数的作用是把参数的值赋给s,给v动态分配长度为n的数组空间,接着利用数组参数a初始化v所指向的数组。class ARRA int ; /指向存放数组数据的空间nt s; /数组大小 publi: RA(in , i); ARRA()delete v; intize() etrn s; int& orator(int n); ;_(1)_ RY(, in )if(n=0) =NULL;s=0;eurn;s=n;v=_()_;fo(inti0;in; +) _(3)_;(1)(2)(3)3. 23。 下面是一维数组类ARAY的定义,ARRY与普通一维数组区别是:(a)用()而不是进行下标访问,(2)下标从1而不是从0开始,(c)要对下标是否越界进行检查.cls RAY int *v; /指向存放数组数据的空间int; /数
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 压缩资料 > 基础医学


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!