面向对象程序设计资料整理_第1页
面向对象程序设计资料整理_第2页
面向对象程序设计资料整理_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、面向对象程序设计复习资料(2328)一、单项选择题假设P是指针,声明指针s引用指针p正确方法是 A. int* s&=pB. int &*s=p在 C+ +中,可以为类的所有成员共享的是 枚举成员 B 、公有数据成员 C 、私有函数成员 C+ +中,下列哪个关键字不能提供封装。struct B 、 union C 、class D 、 case 下而关于类的复制构造函数的说法正确的是12.A、3.A、4.A. 一个类只能有一个复制构造函数B. 可以为 void 类型C. 不能有返回类型D. 不能使用缺省参数5. 下面叙述正确的是:A. 派生类不可以使用私有派生B. 保护派生时,

2、基类的保护成员在派生类中是公有的C. 对基类成员的访问可以允许两义性D. 赋值兼容规则也适用于多重继承的组合6. 定义虚函数使用关键字A.: B.virtual C.&D.->7. 在下面几项中,运算符在 C+中能被重载的是A .=B.? :C.sizeofD.A .结构8. 在执行下面程序语句之后,int num = 500; int& ref= num; ref = = ref -50;A. 450B. 5009. 所有在函数外面定义的变量,连同形式参数,A、局部变量 B、全局变量C10. 面向对象的程序中,哪项不是对象的特点。A、多态性 B、抽象性和封装性C11.

3、下面在半初始化说法正确的是A. 初始化列表可以初始化任何类B. 初始化列表也也可以初始化具有私有成员的类C. 初始化列表只能初始化公有数据成员D. 初始化列表可以初始化所有数据成员12. 产生编译时的多态性的必要条件是使用A .静态成员B.友元函数13 . operator 经 常 和 C+ 的 一 ()C.sizeofB.类num 的值为C. -50 都属于 、静态变量、中断C int *&s=pDint s* &=p、公有函数成员C.继承D .引用D .无法确定、寄存器变量、继承性:C.重载成员函数个 运算符 连 用 ,构成一个运算符函D.虚函数数名.运算符函数的返回类型不

4、能是B.至少有一个虚函数D.只含有一个虚函数B.有 2 个运算符不能被重载D.有 4个运算符不能被重载()()D.对象()()()()()()()()D.单一继承)A. voidB.charC.intD.float14. 下面是对C+运算符的叙述,正确的叙述是A .只有类运算符B.只有友元运算符C.同时具有类运算符和友元运算符D.同一个运算符只能重载一次15. 在面向对象的设计中 ,一切都是围绕着什么展开的A .类B .结构C .数据类型16. 下面哪项不能算是面向对象程序设计所具有的显著特点A . 封装 B. 继承 C. 抽象 D. 递归17. 下面选项中哪一项不是结构和类的共同特性A. 对

5、象可以用作数组的元素 B.在缺省情况下,成员是私有的C.对象之间可以相互赋值D.可以说明指向对象的指针和引用18. 下面有关类性质说法错误的是A. 一个类可以有多个构造函数 ,但只有一个析构函数B. 析构函数和构造函数都不能有返回类型C. 不可以给析构函数指定参数D. 一个类中不可以说明具有类类型的数据成员19. 下面叙述不正确的是A. 成员的访问能力取决于派生方式B. 基类的私有成员在公有派生类中不可访问C. 对象可以访问所有成员D. 公有基类成员在保护派生中保护的20. 成为抽象类的一个条件是这个类A.至少有一个纯虚函数C.只含有一个纯虚函数21. 下列叙述正确的是A .有 1 个运算符不

6、能被重载C .有3个运算符不能被重载22. 在以下选项中,不属于模板特点的选项是A. 处理数据时,处理的是不同类型的相同操作B. 声明不需要给出数据类型C. 对于相同的数据类型产生不同的实例D. 对于不同的数据类型能够产生不同的实例23. 通过什么建立类树A.类B.虚函数C.多重继承24. C+使用新的分配动态内存的函数是A . malloc ( )B. free( )C. deleteD. new25. 以下关于C+ +对象特点叙述不正确的是A、对象可以进行四则运算C、对象可以用作数组的元素C对象可以用作函数参数D 、对象之间可以相互赋值26. 有关复制构造函数说法错误的是A. 复制构造函数

7、不能使用初始化列表B. 复制构造函数不能有返回值C. 复制构造函数名与类名相同并可以有多个复制构造函数D. 复制构造函数的参数可以为引用对象27. 对友元函数描述正确的是A. 一个类的友元函数是该类的一个特殊成员函数B. 个类的友元函数可以访问类的所有数据成员C. 友元函数只允许访问该类对象的私有成员D. 友元函数只允许访问该类的公有成员28. 进行文件操作时需要包含的头问家是A. 29. 下面关于类模板叙述不正确的是A.声明类模板“;”号结束B .不能重载运算符C .可以使用友元函数D .能使用虚函数30. 系统不会为类自动建立什么成员函数A .默认构造函数B.默认析构函数二、填空题:D.

8、stdlib.h( )C.默认虚析构函数D.默认赋值运算赋1 .函数int * func(void)的返回类型是 _ _.2. C+ +中,关键字用彳3. 关键字virtual 可以用来声明 类.4. 抽象类至少要含有一个,这种函数属于虚函数5. 成员函数“ void print( )const;"是类的函数,它只能被const对象调用。6. 声明double的转换函数是 。7. 模板分为模板和类模板。8. 类群是由一些彼此互不相关的 组成。9. 类的作用于限定符是。10. .Base(Base&是类Base的 函数的原型声明,它的等效形式为 Base(const Base&

9、amp;)11. 要想取消动态联编,可以使用 ,它的另一个基本用途是避免两义性.12. 声明double的转换函数是 。13. 根据类对其成员的要求,可把类分为 模板和无约束模板。14. 在面向对象程序设计时, 函数一定既提供了接口也提供了实现。15. 函数func(int &a)里面使用return;语句,则函数的返回值类型为 .16. 一般使用类中的 函数供类内部的成员函数使用,可以实现更好的封装性17. 成员名限定的符号是,它可以在引用成员时避免两义性.18. 对类的构造函数而言,析构函数可以为虚函数,不可以为虚函数.19. 指向类成员的指针引入了新的运算符 和->*.20

10、. 使用友元重载提取符函数时,它的第2个参数必需使用形式。21. 一个模板声明可以列出多个参数,多个参数之间必须使用 隔开。20.设计类的基本原则应该是。22. 语句 int * x=new int(58);使*x .23. 如果要为其他对象提供相互作用的接口,可以通时 函数实现。24. 空类Empty的声明形式为 。25. 只有继承的情况下,基类的派生类之间才有赋值兼容性规则。26. 产生多态性要求类之间的继承关系满足 。27. 使用友元重载提取符函数时,它的第 2个参数必需使用 形式。28 .类群是由一些彼此互不相关的 组成。三、改错题1. 指出下面程序段中的错误。const int R=

11、 15;R=3 *R;int m =50-R;cout << m < <en dl;2. 找出以下程序中的错误,并说明原因。# in clude < iostream.hclass baseint m, n ;public:base(int a, int b): m(b), n(a)void Disp( )cout<<m<< " ,H <<n<<endl ; ;3. 找岀以下程序中的错误,并说明错在何处# include <iostream.h>class baseint m;public:ba

12、se(int a):m(a);int Getx()retum m;class derived : private baseint n;public: derived(int a, int b):m(a)n=b; 4改正下面程序段中的错误,使其能正确输出数组第五项的内容。# include <iostream.h > void main()int *p , a5 = 1,2,3,4,5 ;p =&a5;cout < <p < < endl; 5找出类定义中的错误并说明理由。class baseprivate :int x , y;void setxy(

13、int a , int b) x=a ; y=bpublic :void show (base * p) cout<<p->x<< ”, ”<<p->y ;6找出以下程序中的错误 ,并说明原因。 include < iostereamh> class baseint p;public:base(int a)p=new int(a) ; int Getx( )return m ; base( )delete p;7仔细阅读下面程序,其中有一个成员函数定义不正确,找出并改正错误。#include <iostream.h>cla

14、ss Aint a;public:A(int m) : a(m)A(A&t) :a(t);class B: public Aint b;public:B(int m, int n) a=m;b=n; 8指出下面程序中的错误。# include < iostream.h>void main( )int * pa;int * &pb= pa;int x = 386;pb =&x;cout<<*pb<<endl;cout<<*pa<<endl;delete pb;9找出下面程序中的错误并给出正确的运行结果。# inc

15、lude <iostream.h> class baseprivate :int x , y;public :void setxy(int a, int b)x=a; =bvoid show(baseb)coutvvb.xvv ”,” <<b.y ;;void main( )base a ;a. setxy(28 , 59)a. show( a);10. 下面是使用类A的主函数,改正其中的错误。void mai n()A p2= (new A) , ( new A) for( int i=0 ; i<2 ; i+ +)delete Ai;11. 指岀下面程序段中的

16、错误。const int R= 15;R=3*R;int m =50-R;cout << m < <endl;12. 下面是使用类A的主函数,改正其中的错误。void main()A p2= (new A) , ( new A) for( int i=0 ; i<2 ; i+ +)delete Ai;13. 仔细阅读下面程序,其中有一个成员函数定义不正确,找岀并改正错误。#include <iostream.h>class Aint a;public:A(int m):a(m)A(A&t):a(t);class B:public Aint b;

17、public:B(int m, int n)a=m;b=n;14. 给岀类声明中的转换函数的定义。Class numberprivate:int val;public:number( int I ) val =I;operator int();四、完成程序题1. 在下面程序中的下划线处填上内联fun函数的原型声明、返回类型和调和调用语句# include<iostream.h>void main() int a=5;int b=8;cout<<a<<endl;cout<<b<endl;inline void fun(int & m,

18、int& n)int temp=m;m=m+n;n=temp-n;5895892. 在下面的主程序中只允许显式地使用一次set成员函数,在下划线处填上适当的程序,使程序的输岀为:#include<iostream.h>class baseprivate:int x;public:void set(int a)x=a;void show();void main() base a,b; a.set(589); a.show();b. show;3 完成下面程序,使其输岀为:2.589000e +001+ 2.589000e +001程序如下:# include <iost

19、ream.h>void main()cout.setf(ios:scientific | ios:left | ios:showpos);cout << 25.89F << endl;cout << 25.89f << endl;4. 使用内联函数重新定义下面求两个整数最小值的宏定义。#define MAX(a,b)(a<b? a:b)解:inline int MAX(int a , int b)return a<b?a:b;5下面是类test的两个成员函数的定义,根据它们的定义,给岀最小的类声明形式,其 中数据成员为私有,成员

20、函数使用原型声明。test: tese(int a int b)m=a; n=bvoid test: show()coutvvmvv ”,”<<n<<endl;6给岀类声明中的转换函数的定义。class numberprivate:int val;public:number( int i ) val =i;operator int();7完成一面程序,使其输岀“ 56 56”,并在退岀运行时正确释放分配给指针的存储空间。所给程序如下:# include <iostream.h>void main ()int *a=int new(56);intcout<

21、;<*a<< " H <v*pv<endl;8在下面程序的下划线处填上正确的语句,使类的数据成员i的值为20,输岀为35#include <iostream.h>class sumpublic: void disp( )cout <<i+j<<endl;void main()Sum a=;adisp();9根据下面的主程序,补上所缺类说明文件的最小形式(成员函数使用原型声明)# include(iostream h)# include base.h”void main()base obj(1,2,3);base obj

22、2(obj1);10. 在主函中的下划线处填上正确的语句使程序输岀并说明理由。A place.Here is B place .Here is B place.程序如下:class B: public Apublic:void display(char*b)cout<< ”Here is”<bv<endl;void main() A a,*pa;display();B b;b. display(B place );pa=;pa->display(B place );11. 完成一面程序,使其输出“ 56 56”并在退出运行时正确释放分配给指针的存储空间。所给程序如

23、下:# include <iostream.h>void main ()int *a=int new(56);intcout<<*a<< " H <<*p<<endl;12. 在下面程序的下划线处填上正确的语句,使类的数据成员i的值为20,输岀为35<#include <iostream.h>class sumpublic: void disp( )cout <<i+j<<endl;void main()Sum a=;a. disp(); 13. 给岀类声明中的转换函数的定义。Cla

24、ss number private: int val;pnblic:number( int I ) val =I;operator int();五、程序分析题1. # include < iostream.h >void main ()int n=333;int&m =n;cout<< m;m=m+150;cout«” <<n;n=n-150;cout«” <<m;2. 分析下面程序的输岀结果。# include<iostream.h>class basechar c;public:void change(

25、char a) c=a+32 ; cout<<c<<endl; ;void main( ) base a;a.change( z ;') a.change(EBz ;)3分析下面程序的输出 .# include<iostream.h> class baseint num; public: base(int x)num=x; cout<< ”Initializing num= ”<<num<<endl; ;void main()cout<<”Entering main”<<endl; cout

26、<<”Exiting main<< endl;static base a(548);4分析下面程序的输出结果。# include < iostream.h ># include < iomanip.h >void main( )cout < < oct < < 15 < < endl:cout < < hex < <15 < < endl:cout < <setflii( a') < < setw (10 ): cour < <25

27、6 < < “OK”< < endl:5分析下面程序输出结果。#include <iostream.h>void f ( )static int n=25;n - ;cout < < ”n=”<<n<< ”;void main ()for (int i=0; i<= 2 ; i+ +)f ( );6分析下面程序的输出结果class basepublic :int x;void setx(int a)x=a;int getx( )return x;# include <iostream.h>void mai

28、n( )base a=125,b;b=a;cout<<a.x<<endl;cout<<b.getx( )<<endl;7分析下面程序的输出# include<iostream.h>class base private:int a)public:base( ) coutvv "析构 "<<a<< endl ; base (int a=0) :a(a) cout << "初始化vvavvendl; )void main( )base a(8),b;8分析下面程序的输出结果。

29、# include < iostream.h># include < iomanip.h >Viod main ( )Cout <<setfill ( “a”)< <setw ( 0 ) < < 15 < < endl< <setw ( 1 ) < < 15 < < endl< <setw ( 4 ) < < 15 < < endl:Cout < < setw ( 8 ) < <setfill ( “a”)< < e

30、ndl:Cout< < setiosfiags (ios: : right )< < setw( 4 )< < 1< < setw( 4 )< < 2 < < endl:Cout< < setiosfiags (ios: : left )< < setw( 4 )< < 1< < setw( 4 )< < 2 < < endl:9分析下面程序的输出结果。 #include<iostream.h> class base Private: in

31、t x,y; public : void setxy(int a,int b)x=a;y=b; void show(base *p) cout<<p->x<< ” , ” <<p->y; ;void main() basea;a setxy(25 ,39) b show(a) ;10分析下面程序的输出结果。 #include < iostream.h> void main( )int x = 56; int *a;int *&p=a; p=new int(x +2); cout < <*p < <end

32、l; cout < < a0 < < endl; cout<<x<<endl;11分析下面程序的输出结果。 #include<iostream.h> class base Private: int x,y; public: void setxy(int a,int b)x=a;y=b; void show(base *p)cout<<p->x<< ” , ”<<p->y; ;void main()base a;a setxy(25 , 39) a show( a) ;12分析下面程序的输

33、出结果。# include <iostream.h> class Aint a;pubic:A(int a=0):a(a) cout<<a<<endl;void show()cout<<a<<endl; ;class BA al;int bpublic:B(int m, int n):al(m),b(n)Void show()al.show();cout<<b<<endl; ;void main()B b(256.285),c(b);c. show() 13分析程序功能并给出输出结果。# include <

34、; iostream .h ># include < fstream .h >Viod main ( void )Fstream fin,fout;Fout.open(“my.txt ”,ios:out);If(! fout.is_open()Retnrn;For(int i=0;i<=10;i=i+2)Fout<< ”This is line ”<<i+1<<endl;Fout.close();Fin.open(”my.txt”ios:in);If(! Fin.is_open()Return;Char str100;While(! Fin.eof()Fin.getline(str,100);Cout<<str<<endl;Fin.close();14分析下面程序的输出结果。# include <iostream.

温馨提示

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

评论

0/150

提交评论