5、面向对象的程序设计基础_第1页
5、面向对象的程序设计基础_第2页
5、面向对象的程序设计基础_第3页
5、面向对象的程序设计基础_第4页
5、面向对象的程序设计基础_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、知识模块五 面向对程序设计基础一、 选择题1. ()不是构造函数的特征。a、构造函数的函数名与类名相同;b、构造函数可以重载;c、构造函数可以设置缺省参数;d、构造函数必须指定类型说明。2. ()是析构函数的特征。a、析构函数可以有一个或多个参数;b、析构函数名与类名不同;c、析构函数的定义只能在类体内;d、一个类中只能定义一个析构函数; 3.要运行一个c语言编写的应用程序如下:main() printf(hello world);在vc6的开发环境中,应该建立哪种类型的工程? a, win32 applicationb, win32 console applicationc, mfc app

2、wizard (exe)d, utility project4. 关于vc6建立的工程的说法,正确的是: a,工程只能包含.cpp和.h类型的文件b,工作区文件的后缀是.dspc, 用鼠标双击工作区文件可以打开整个工程d,在vc的fileview中可以看到工程中所有的文件,包括工作区文件,项目文件等5. 在vc6中提供了成员方法的自动列表和方法参数的自动提示功能,但有时不能正常显示,这是应该删除该工程目录下那种后缀类型的文件后,再次打开工程,就可以正常提示了。 a, clwb, ncbc, optd, aps6. 有关句柄(handle)的说法,下列不正确的是: a 句柄是一个4字节长的整数值

3、 b 句柄用来标识应用程序中不同的对象或同类对象中的不同实例 c 消息是句柄的一种 d 画笔的句柄类型是hpen,画刷的句柄类型是hbrush7. c+对c语言作了很多改进,下列描述中()使得c语言发生了质变,从面向过程变成了面向对象。 a、增加了一些新的运算符; b、允许函数重载,并允许设置缺省参数; c、规定函数说明必须用原型; d、引进了类和对象的概念;8. 下列描述中,()是错误的。a、内联函数主要解决程序的运行效率问题;b、内联函数的定义必须出现在内联函数第一次被调用之前;c、内联函数中可以包括各种语句;d、对内联函数不可以进行异常接口声明;9. 在c+中,关于下列设置缺省参数值的描

4、述中,()是正确的。a、不允许设置缺省参数值;b、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;c、只能在函数的定义性声明中指定参数的缺省值;d、设置缺省参数值时,必须全部都设置;10.()不是构造函数的特征。 a、构造函数的函数名与类名相同; b、构造函数可以重载; c、构造函数可以设置缺省参数; d、构造函数必须指定类型说明。11. 是析构函数的特征。 a、析构函数可以有一个或多个参数; b、析构函数名与类名不同; c、析构函数的定义只能在类体内; d、一个类中只能定义一个析构函数12. c+对c语言作了很多改进,下列描述中()使得c语言发生了质变,从面向过程变成了面向对象。a、

5、增加了一些新的运算符;b、允许函数重载,并允许设置缺省参数;c、规定函数说明必须用原型;d、引进了类和对象的概念;13. 下列描述中,()是错误的。a、内联函数主要解决程序的运行效率问题;b、内联函数的定义必须出现在内联函数第一次被调用之前;c、内联函数中可以包括各种语句;d、对内联函数不可以进行异常接口声明;14. 在c+中,关于下列设置缺省参数值的描述中,()是正确的。a、不允许设置缺省参数值;b、在指定了缺省值的参数右边,不能出现没有指定缺省值的参数;c、只能在函数的定义性声明中指定参数的缺省值;d、设置缺省参数值时,必须全部都设置; 15. 在进行完任何c+流的操作后,都可以用c+流的

6、有关成员函数检测流的状态;其中只能用于检测输入流 状态的操作函数名称是( )。 a failb eof c bad d good 16. c+语言是从早期的c语言逐渐发展演变而来的。与c语言相比,它在求解问题方法上进行的最大改进是()。 a 面向过程 b 面向对象 c 安全性 d 复用性 17. c+对c语言作了很多改进,即从面向过程变成为面向对象的主要原因是_ a.增加了一些新的运算符 b.允许函数重载,并允许设置缺省参数 c.规定函数说明符必须用原型 d.引进了类和对象的概念18. c+源程序文件的缺省扩展名是_ a. cpp b. exe c. obj d. lik19. 在int a=

7、3,int *p=&a;中,*p的值是_20. 类的析构函数是在_调用的。 a.类创建时b.创建对象时 c.删除对象时 d.不自动调用21. 假定ab为一个类,则执行ab x;语句时将自动调用该类的_a.有参构造函数 b.无参构造函数c.拷贝构造函数 d.赋值构造函数22. 假定要对类ab定义加号操作符重载成员函数,实现两个ab类对象的加法,并返回相加结果,则该成员函数的声明语句为: a. ab operator+(ab & a , ab & b) b. ab operator+(ab & a)c. operator+(ab a) d. ab & operator+( )23. 假定ab为一个

8、类,则执行ab x;语句时将自动调用该类的_ a.有参构造函数b.无参构造函数 c.拷贝构造函数d.赋值构造函数) 25. 假定ab为一个类, 则该类的拷贝构造函数的声明语句为_. a. ab&(ab x); b. ab(ab x) c. ab(ab&); d. ab(ab * x) 26. 下列哪项不是面向对象程序设计的主要特征? a.封装 b.继承 c.多态 d结构27. 对象之间的相互作用和通信是通过消息。下列哪项不是消息的组成部分?a接受消息的对象 b要执行的函数的名字 c.要执行的函数的内部结构 d函数需要的参数28. 关于c+与c语言关系的描述中,( )是错误的。a.c语言是c+语

9、言的一个子集 b.c语言与c+语言是兼容的c.c+语言对c语言进行了一些改进 d.c+语言和c语言都是面向对象的29. 已知:类a中一个成员函数说明如下:void set(a&a); 其中,a&的含义是( )。 a.指向类a的指针为a b将a的地址值赋给变量set c.a是类a对象的引用,用来作函数set()的参数d.变量a与a按位与作为函数set( )的参数30. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。a.void print( ) const; b.const void print( ); c void const print( ); d.

10、void print(const);31. 如果类a被说明成类b的友元,则_a.类a的成员即类b的成员 b.类b的成员即类a的成员c.类a的成员函数不得访问类b的成员 d.类b不一定是类a的友元32. 假定ab为一个类,则执行ab x;语句时将自动调用该类的_ a.有参构造函数 b.无参构造函数 c.拷贝构造函数 d.赋值构造函33. 下面的函数声明中, _是” void bc(int a, int b);”的重载函数? a. int bc(int a, int b) b. void bc(int a, char b) c. float bc(int a, int b, int c=0) d.

11、 void bc(int a, int b=0) 34. 下面的哪一个保留字不能作为函数的返回类型?_a. void b. int c. new d. long 35. 下列关键字中,用以说明类中公有成员的是( )。 a friend; b private; c protected ;d public 36. 进行文件操作时需要包含( )文件。 a iostream.h ;b stdlib.h ;c stdio.h; d fstream.hc 指向字符串常量的指针; d 指向字符串的指针常量 37. 能用作用户自定义标识符。a friend b-var c)3xyz dfloat38. 面向对

12、象程序设计将数据与 放在一起,做为一个相互依存、不可分割的整体来处理。 a 对数据的操作b 信息c数据隐藏d数据抽象39. 一个类的析构函数 。a唯一的 b允许重载 c至多可有两个 d只能是缺省的40. 下列说法正确的是: 。a一个类的对象可以是另一个类的成员b一个类可以作为另一个类的派生类c一个类定义在另一个类的说明中d以上说法均正确41. 下列各类函数中, 不是类的成员函数。a 构造函数 b析构函数 c 友元函数 d拷贝构造函数42. 有关析构函数的说法不正确的是 。a 析构函数有且只有一个 b 析构函数无任何函数类型 c析构函数和构造函数一样可以有形参d 析构函数的作用是在对象被撤销时收

13、回先前分配的内存空间43. 通常拷贝构造函数的参数是 。a 某个对象名 b 某个对象的成员名 c 某个对象的引用名d 某个对象的指针名44. 已知:类a中一个成员函数说明如下:void set(a&a); 其中,a&的含义是( )。a.指向类a的指针为a b将a的地址值赋给变量set ca是类a对象的引用,用来作函数set()的参数d.变量a与a按位与作为函数set( )的参数45. 已知:print( )函数是一个类的常成员函数,它无返回值,下列表示中,( )是正确的。avoid print( ) const; b.const void print( ); c.void const prin

14、t( ); d.void print(const);46. 类的析构函数是在_调用的。a.类创建时 b.创建对象时c.删除对象时 d.不自动调用47. 如果类a被说明成类b的友元,则_a.类a的成员即类b的成员 b.类b的成员即类a的成员c.类a的成员函数不得访问类b的成员 d.类b不一定是类a的友元二、填空题(1)在用class定义一个类时,数据成员和成员函数的默认访问权限是 。 (2)含有纯虚函数的类称为 。 (3)派生类的主要用途是可以定义其基类中_。(4)当建立_,程序自动调用该类的构造函数。(5)类是用户定义的类型,具有类类型的变量称作_。(6)当一个成员函数被调用时,该成员函数的_

15、指向调用它的对象。(7)拷贝函数通过_使用引用来初始化创建中的对象。(8)静态成员函数、友元函数、构造函数和析构函数中,不属于成员函数的是 _ 。(9)对象的三大基本特性是多态性、_、封装性。 (10) 当一个类对象离开它的作用域时, 系统将自动调用该类的_.(11)假定ab为一个类, 则执行ab a10; 语句时, 系统自动调用该类构造函数的次数为_.(12)指向基类的对象的指针变量也可以指向 的对象。(13)面向对象程序中,实体的状态由 表示,其行为由 表示。(14)定义_函数时,应在参数个数或参数类型上有所不同。(15)类是用户定义的类型,具有_称作对象。(16)使用指向对象的指针来标识

16、类的成员,则必须使用的运算符是_ 。(17)拷贝初始化构造函数使用_来初始化创建中的对象。 (18) 封装要求一个对象应具备明确的功能,并具有 _ 以便和其它对象相互作用。 (25)在删除一个动态对象时,将自动调用该动态对象所属类的 _ 函数。 三、判断题 (1)在定义一个类时,不能在类说明中对数据成员使用表达式进行初始化。()(2)如果在类声明中没有定义复制构造函数,就不能用一个对象去初始化另一个对象()(3)类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。(对)(4)在面向对象的程序设计中,凡操作属于同一种对象的,就将这些操作放进该对象类中,形成该类的成员函数。

17、( )(5)说明函数原型时不需要指明每个函数参数的名字,只需要说明每个参数的类型和返回值类型就可以了。( )(6)所有的表达式都有值。 ( )(7)程序的编译是以文件为单位的,因此将程序分到多个文件中可以减少每次对程序修改所带来的编译工作量。( )(8)类的静态数据成员需要在定义每个类的对象时进行初始化。( )四、程序填空(1)在下面程序的横线处填上适当的语句,使该程序执行结果为10. #include “iostream.h”class myclass public: myclass(int a)x = a; /取x值 private:int x; ; int main() myclass

18、my(10); coutmy.getnum()endl; return 0; (2)在下面程序的底画线处填上适当的字句,使该程序执行结果为60。# include class baseint x;publicvoid int (int init x)x=init x; int getnum() return x+7; void main()_cout(3)在下面程序的底画线处填上适当的字句,完成类中成员函数的定义。# include class box privateint color;int upx,upy;int lowx,lowy;publicfriend int same_color(

19、line a,box b);_;void define_box(int x1,int y1,int x2,int y2)upx=x1;upy=y1;class line privateint color;int startx,starty;int len;publicfriend_int same_color(line a,box b);_;void define_line(int x,int y)startx=x;int same_color(line a,box b)if(a.color= =b.color)return 1;return 0;(4)在下面程序的底画线处填上适当的字句,完成

20、程序。# include class a _(int i)coutvoid g()cout”gn”;closs ba publicvoid h()cout”hn”;_;void main() b d1;d1.f(6);d1.h();(5)在下列程序的空格处填上适当的字句,使输出为:0,8,5。# include # include class magicdouble x;publicmagic(double d=0.00)x(fabs(d)magic _return magic(sqrt(x*x+c.x*c.x);_(ostream & os,magic c)return os;void ma

21、in()magic ma;cout(6)在下面程序的底画线处填上适当的字句,使该程序执行结果为10。 #include class baseint x; public: _为x置值 _取x值 ; void main() base test; test.init(3); couttest.getnum(); (7)在下列程序的底画线处填上适当的字句,完成类中成员函数的定义。 #include class box private: int color;int upx,upy;int lowx,lowy; public: friend int same-color(line a,box b); _

22、set-color(int c)color=c; void define-box(int x1,int y1,int x2,int y2)upx=x1;upy=y1; ; class line private: int color;int startx,starty;int len; public: friend-int same-color(line a,box b); _set-color(int c)color=c;void define-line(int x,int y)startx=x;int same-color(line a,box b)if(a.color= =b.color)

23、 return 1;return 0;(8)在下面程序的底画线处填上适当的字句,完成程序。 #include class a public: void f(int i)coutiendl; void g()cout”n”; ; class _ public: void h()cout”hn”; af; ; void main() b d1; d1.f(6); _.h(); (9)在下列程序的空格处填上适当的字句,使输出为:0,7,5。 #include #include class magic double x; public _(double d=0.00)x(fabs(d) magic o

24、perator+(magic c)return magic(sqrt(x*x+c.x*c.x); friend ostream & operator(ostream & os,magic c)return osc.x; ; void main() _; coutma,magic(-7),ma+magic(3)+magic(4); (10)在下面程序横线处填上适当字句,以使该程序执行结果为:5432105.54.43.32.21.1#include template void f () ; for (int i=0; in/2; i+) t=ai, ai=an-1-i, an-1-i=t;voi

25、d main () int a5=1,2,3,4,5; double d6=1.1,2.2,3.3,4.4,5.5; f(a,5); f(d,6); for (int i=0; i5;i+) cout ai ; cout endl; for (i=0; i6; i+) cout di ; cout endl;五、程序阅读题 1.分析以下程序执行的结果 #include #include class sample public: int x,y; sample()x=y=0; sample(int a,int b)x=a;y=b; void disp() coutx=x,y=yendl; ; v

26、oid main() sample s1(2,3); s1.disp(); 2.分析以下程序的执行结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a;y=b; sample() if(x=y) coutx=yendl; else coutx!=yendl; void disp() coutx=x,y=yendl; ; void main() sample s1(2,3); s1.disp(); 3.分析以下程序的输出结果 #include class sample int x; publ

27、ic: sample(int a) x=a; coutconstructing object:x=xendl; ; void func(int n) static sample obj(n); void main() func(1); func(10); 4 分析以下程序的执行结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a;y=b; void disp() coutx=x,y=ydisp(); 5 分析以下程序的执行结果 #include class sample public: i

28、nt x; int y; void disp() coutx=x,y=yendl; ; void main() int sample:*pc; sample s; pc=&sample:x; s.*pc=10; pc=&sample:y; s.*pc=20; s.disp(); 6 分析以下程序的执行结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a;y=b; void disp() coutx=x,y=yendl; ; void main() sample s1,s2(2,3); s1

29、.disp(); s2.disp(); 7 分析以下程序执行的结果 #include class sample int x,y; public: sample() x=y=0; sample(int a,int b) x=a;y=b; sample() if(x=y) coutx=yendl; else coutx!=yendl; void disp() coutx=x,y=yendl; ; void main() sample s1(2,3); s1.disp(); s1.sample(); 8 分析以下程序的执行结果 #include class sample int x,y; publi

30、c: sample() x=y=0; sample(int a,int b) x=a;y=b; sample() if(x=y) coutx=yendl; else coutx!=yendl; void disp() coutx=x,y=yendl; ; void main() sample s1,s2(2,3); s1.disp(); s2.disp(); 9.分析以下程序的执行结果 #include #include class sample public: int x,y; sample()x=y=0; sample(int a,int b)x=a;y=b; void disp() co

31、utx=x,y=yendl; sample() if(x=y) coutx=yendl; else coutx!=yendl; ; void main() sample s1(2,3); s1.disp(); if(s1.x=2) exit(0); 10.分析以下程序的执行结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a,y=b; sample() if(x=y) coutx=yendl; else coutx!=yendl; void disp() coutx=x,y=yendl;

32、; void main() sample(2,3); 11.分析以下程序的执行结果 #include class sample public: sample(); sample(int); sample(); void display(); protected: int x; ; sample:sample() x=0; coutconstructing normallyn; sample:sample(int m) x=m; coutconstructing with a number:xendl; void sample:display() coutdisplay a number:xen

33、dl; sample:sample() coutdestructingn; void main() sample obj1; sample obj2(20); obj1.display(); obj2.display(); 12.分析以下程序的执行结果 #include class sample int n; static int sum; public: sample(int x)n=x; void add()sum+=n; void disp() coutn=n,sum=sumendl; ; int sample:sum=0; / 静态数据成员赋初值 void main() sample

34、a(2),b(3),c(5); a.add(); a.disp(); b.add(); b.disp(); c.add(); c.disp(); 13.分析以下程序执行的结果 #include class sample int a; static int b; public: sample(int a)a=a,b+=a; static void func(sample s); ; void sample:func(sample s) couta=s.a,b=bendl; int sample:b=0; void main() sample s1(2),s2(5); sample:func(s1

35、); sample:func(s2); 14.分析以下程序的执行结果 #include class sample char c1,c2; public: sample(char a)c2=(c1=a)-32; void disp() coutc1转换为c2endl; ; void main() sample a(a),b(b); a.disp(); b.disp(); 15.分析以下程序执行的结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a;y=b; void disp() coutx

36、=x,y=yendl; ; void main() sample s1,s2(1,2),s3(10,20); sample *pa3=&s1,&s2,&s3; for(int i=0;idisp(); 16. 分析以下程序的执行结果 #include class sample int x,y; public: sample()x=y=0; sample(int a,int b)x=a,y=b; void disp() coutx=x,y=yendl; ; void main() sample s1,s2(1,2),s3(10,20); sample *pa3; pa0=&s1; pa1=&s2; pa2=&s3; for(int i=0;idisp(); 17. 分析以下程序的执行结果 #include class sample public: int x; int y; void disp() coutx=x,y=y*pc=10; pc=&sample:y; p-*pc=20; p-disp(); 18.分析以下程序的执行结果 #include class sample int x; int y; public: sample(int a,int b) x=a;y=b; int getx()return x; int gety

温馨提示

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

最新文档

评论

0/150

提交评论