ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:26.06KB ,
资源ID:11561309      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11561309.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C++复习题1.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C++复习题1.docx

1、C+复习题1一、概念题1类和对象有什么区别和联系?2什么是类的实现?3this指针的概念是什么?4为什么要引入构造函数和析构函数?5什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?6什么是堆对象?创建和回收堆对象的方法是什么?7为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么?8什么是静态成员函数?静态成员函数和非静态成员函数有什么区别?9结构struct和类class有什么异同?10比较类的三种继承方式public、protected、private之间的区别。11派生类构造函数和析构函数执行的次序是怎样

2、的?12什么叫虚基类?有什么作用?13什么是多态性,在C+中是如何实现多态的?14什么是抽象类,其有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?15在C+中能否声明虚构造函数,为什么?能否声明虚析构函数,有什么作用?16典型的Windows应用程序结构有哪些?17什么是消息?什么是消息映射?18文档类的主要作用是什么?视图类提供的主要函数有哪些?19简述利用ClassWizard是如何添加消息映射函数的。20非模式对话框和模式对话框有何区别?二、填空题1拷贝构造函数使用_作为参数初始化创建中的对象。2在C+中,对于构造函数和析构函数来说,_是可以重载的,而_是不可以重载的。3B类中包含

3、一个A类的成员a,则生成B类的对象时构造函数的调用顺序为_。4类的每一个成员函数(静态成员函数除外)都有一个隐含的参数,叫做_。假设类名为A,则该参数的类型为_。5类的静态成员分为_和_。6声明友元的关键字是_。7如果类A继承了B,则类A称为_,类B称为_。8派生类对基类的继承有三种方式:_、_和_。9如果只想保留公共基类的一个拷贝,就必须使用关键字_把这个公共基类定义为虚基类。10派生类的成员有两种来源,即_和_。11要想访问基类的private成员变量,只能通过基类提供的_进行间接访问。12.重载运算符应仍保持其原有的操作数个数、结合性和_。13.对于双目运算符,若重载为类的成员函数,有_

4、个参数;若重载为友元函数,则有_个参数。14.后缀+重载为类的成员函数(设类名为A)的形式为_,重载为类的友元函数(设类名为A)的形式为_。15.设有一时间类Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数的相加运算,所得结果为一个新时间,则成员函数的声明语句为_。16C+语言支持的两种多态性分别是编译时的多态性和_的多态性。17联编有两种方式,即_和_。18抽象类必须至少包含一个_。21Windows系统中消息的主要类型有_、_和_。22当用户在窗口中按下鼠标左键时,Windows系统就会自动发送_消息给该窗口,如果程序要对此消息作出反应,则程序中应包含类似_函数。23OnD

5、raw()函数有一个指向_类的指针参数,通过该参数可以直接向视图输出。24应用程序将任何东西画到设备中之前,必须明确索取一个_。25对话框分为_和_两种。26对话框的初始化工作一般在_和_中完成。27MFC中公用对话框有_、_、_、_和_。28视图派生类可以选择_类作其基类,可以实现文本编辑功能。29对于文档类,数据成员的初始化工作是在_函数中完成的。30.如果修改了文档类中的数据,并要求重新显示,要用_或_发出重画消息,引起对OnDraw()的调用。31.当执行cout语句输出endl数据项时,将使C+显示输出屏幕上的光标从当前位置移动到_的开始位置。32.假定x和y为整型,其值分别为16和

6、5,则a/y和double(x)/y的值分别为_ 和 _。33.strlen(“apple”)的值为_。34.C+程序运行时的内在空间可以分为全局数据区,堆区,栈区和_区。35.假定a是一个一维指针数组,则a+i所指对象的地址比a大_字节。36.如果一个派生类只有一个唯一的基类,则这样的继承称为_。37.假定AA是一个类,“AA * abc()const;”是该类中的一个成员函数的原型,在该函数体中_向*this或其成员赋值。38.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为_。39.假定用户为类AB定义了一个构造函数“AB(int aa)a=aa;”,该构造函数实现

7、对数据_的初始化。40.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有_个操作数。41.C+有两种联编方式,其中在程序编译时的联编叫做_联编42.虚函数可以是另一类的_函数43.定义虚函数需要用_关键字44.将函数“void vf()”定义为纯虚数的格式是virtual void vf()_45.拥有纯虚函数的类就是_,该类不能产生类的实例46.派生类没有重载基类的纯虚函数,则此派生类也是_47.有如下程序#include class CSAI_A public: virtual void fun()coutA;class CSAI_B:public CSAI_A pu

8、blic: virtual void fun()CSAI_A:fun();coutfun();delete p;执行这个程序的输出结果是()答案:_48. 有如下程序#include const int T=8; void main() int i,s=0; for(i=1;i=T;i+) s+=i*i; couts ; coutendl; 运行结果:_49. 有如下程序int ff(int x,int y) int z; coutx+yz; if(x+y=z) return 1;else return 0; 函数功能:_50. 有如下程序char *f(char *s) int n=strl

9、en(s); char * r=new charn+1; for(int i=0;i=a & si”重载为类CSAI的友元函数的格式是:friend instream& operator _56.this指针_破坏类的封装性。57.通过指向基类的指针调用派生类对象的函数时,采用_调用。58.下面是对按从小到大排列的有序数组an中进行二分查找x的算法,若查找成功返回该元素的下标,否则返回-1。int BinnarySearch(int a,int n,int x) int low=0,high=n-1; /定义并初始化区间下界和上界变量 int mid; /定义保存中点元素下标的变量 while

10、(low=high) mid=(low+high)/2; if(x=amid) _ else if(xamid)high=mid-1; else _ return -1;59.请补充完整如下的类定义: #include class A char *a;public: A()a=0; /定义无参构造函数,使A的值为空 A(char *aa) a= _ ; /进行动态存储分配 strcpy(a,aa); /用aa所指字符串初始化a所指向的动态存储空间 _ ; /定义析构函数,删除a所指向的动态存储空间 ;三、编程题1创建一个Employee类,该类中有字符数组表示姓名、街道地址、市、省和邮政编码。

11、把表示构造函数、ChangeName函数、Display函数的函数原型放在类定义中,构造函数初始化每个成员,Display函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。2设计并测试类Point,其数据成员是直角坐标系的点坐标。友元函数distance用来计算两点间的距离。3定义一个Rectangle类,有宽width、长length等属性,重载其构造函数Rectangle、Rectangle(int width , int length)。4编写一个程序,设计一个Cdate类,它应该满足下面的条件。 用这样的格式输出日期:日-月-年。 输出在当前日期上加两天后的日期。 设

12、置日期。5按照下面函数原型语句编写一个递归函数求出并返回数组a中n个元素的平方和。 int f(int a,int n)6根据下面类中Sum函数成员的原型和注释写出它的类外定义。 class AA int *a; int n; int MS; public: void InitAA(int aa,int nn,int ms) if(nnms)coutError!endl;exit(1); MS=ms; a=new intMS; for(int i=0;in;i+)ai=aai; int Sum();/求出并返回数组a中前n个元素之和 ;7定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学

13、生类,教师类增加工号、职称和工资,学生类增加学号、班级、专业和入学成绩。8下列Shape类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是一个通用的用以求不同形状的图形面积总和的函数。请从Shape类派生三角形类(Triangle)、矩形类(Rectangle),并给出具体的求面积函数。class Shape public: virtual float area()=0; float total(Shape *s,int n) float sum=0.0; for(int i=0;iarea(); return sum; 9声明一个Shape类(形状)基类,它有两个派

14、生类:Circle(圆)和Square(正方形),要求如下。 根据给出的圆心坐标计算圆的面积。 根据给出的正方形中心坐标和一个顶点坐标计算该正方形的面积。提示:Shape类的数据成员包括中心的坐标,Circle类和Square类由Shape类派生,Circle类新增一个数据成员,即圆的半径,Square类新增两个数据成员,即顶点坐标。1解答要点:类是一种复杂的数据类型,它是将不同类型的数据和与这些数据相关的操作封装在一起的集合体。类是对某一类对象的抽象,而对象是某一种类的实例。2解答要点:将类所有未编写函数体的成员函数在类体外全部编写出来。3解答要点:类中所有的成员函数(静态成员函数除外)都隐

15、含了第一个参数,这个隐含的第一个参数就是this指针,在成员函数的实现代码中,所有涉及对类的数据成员的操作都隐含为对this指针所指对象的操作。4解答要点:构造函数的作用是为类对象的数据成员赋初值,构造函数在定义类对象时由系统自动调用;在一个对象死亡或者说退出生存期时,系统会自动调用析构函数,因此可以在析构函数定义中,设置语句释放该对象所占用的一些资源。5解答要点:当有用一个已经存在对象创建一个同类型的新对象的需求时。当对象含有指针数据成员,并用它初始化同类型的另一个对象时,默认的拷贝构造函数只能将该对象的数据成员复制给另一个对象,而不能将该对象中指针所指向的内存单元也复制过去。这样,就可能出

16、现同一内存单元释放两次,导致程序运行出错。6解答要点:堆区用来存放在程序运行期间,根据需要随时建立的变量(对象),建立在堆区的对象称为堆对象,当堆对象不再使用时,应予以删除,回收所占用的动态内存。创建和回收堆对象的方法是使用new和delete运算符。7解答要点:定义静态数据成员是为了同一个类的不同对象之间共享公共数据成员;用关键字static可以把数据成员定义成静态数据成员;在定义的类被使用前,要对其中的静态数据成员进行初始化,初始化时不必添加关键字static。8解答要点:用关键字static可以把这成员函数定义成静态成员函数。 静态成员函数只能访问类的静态数据成员,不能访问类的非静态数据

17、成员。因为静态成员函数是类的成员,不涉及具体的对象,访问静态成员函数常用类名引导。 非静态成员函数可以访问类的静态数据成员,也可以访问非静态数据成员。因为类的静态成员总是存在的。 静态成员函数和非静态成员函数,最主要的差别是非静态成员函数隐含了第一个参数this指针,静态成员函数不含this指针。9解答要点:struct和class都可以定义类,但是缺省访问权限说明时,struct的成员是公有的,而class的成员是私有的。在C+中,struct可被class代替。10解答要点如下。采用public公有派生,基类成员的访问权限在派生类中保持不变,即基类所有的公有或保护成员在派生类中仍为公有或保

18、护成员。public派生最常用,可以在派生类的成员函数中访问基类的非私有成员,可通过派生类的对象直接访问基类的公有成员。采用private私有派生,基类所有的公有和保护成员在派生类中都成为私有成员,只允许在派生类的成员函数中访问基类的非私有成员。private派生很少使用。采用protected保护派生,基类所有的公有和保护成员在派生类中都成为保护成员,只允许在派生类的成员函数和该派生类的派生类的成员函数中访问基类的非私有成员。11解答要点如下。派生类构造函数的执行次序:首先,调用基类构造函数,调用顺序按照它们被继承时声明的基类名顺序执行;其次,调用内嵌对象构造函数,调用次序为各个对象在派生类

19、内声明的顺序;最后,执行派生类构造函数体中的内容。派生类析构函数执行过程与构造函数执行过程相反。即当派生类对象的生存期结束时,首先调用派生类的析构函数,然后调用内嵌对象的析构函数,再调用基类的析构函数。12解答要点如下。在多重继承中,如果多条继承路径上有一个公共的基类,则在这些路径的汇合点上的派生类会产生来自不同路径的公共基类的多个拷贝,如果用virtual把公共基类定义成虚基类,则只会保留公共基类的一个拷贝。引进虚基类的目的是为了解决二义性问题,使得公共基类在它的派生类对象中只产生一个基类子对象。13. 解答要点如下。多态是指同样的消息被不同类型的对象接收时导致完全不同的行为,是对类的特定成

20、员函数的再抽象。C+支持的多态有多种类型,重载(包括函数重载和运算符重载)和虚函数是其中主要的方式。14. 解答要点如下。含有纯虚函数的类称为抽象类。抽象类的主要作用是通过它为一个类族建立一个公共的接口,使它们能够更有效地发挥多态特性。抽象类声明了一组派生类共同操作接口的通用语义,而接口的完整实现,即纯虚函数的函数体,要由派生类自己给出,抽象类只能作为基类被继承使用。抽象类的派生类不一定要给出纯虚函数的实现,没有给出纯虚函数的实现的派生类仍然还是抽象类。15. 解答要点如下。在C+中不能声明虚构造函数。多态是不同的对象对同一消息有不同的行为特性,虚函数作为运行过程中多态的基础,主要是针对对象的

21、,而构造函数是在对象产生之前运行的,因此虚构造函数是没有童义的。在C+中可以声明虚析构函数。析构函数的功能是在该类对象消亡之前进行一些必要的清理工作,如果一个类的析构函数是虚函数,那么,由它派生而来的所有子类的析构函数也是虚函数。析构函数设置为虚函数之后,在使用指针引用时可以动态联编,实现运行时的多态,保证使用基类的指针就能够调用适当的析构函数对不同的对象进行清理工作。16解答要点: 控制台应用程序。 基于框架窗口的应用程序。 基于文档/视图结构的应用程序。 基于对话框的应用程序。17解答要点:在Windows操作系统中,无论是系统产生的动作,还是用户运行应用程序产生的动作都称为事件(even

22、ts)产生的消息。如果程序需要消息做出反应,必然要调用相应的处理函数,如果没有定义处理函数,则该消息被忽略。编制消息处理函数被称作消息映射。18解答要点:文档类CDocument的派生类对象规定了应用程序的数据。视图类的几个重要成员函数:GetDocument()、OnDraw()、OnInitialUpdate()等。20解答要点: 非模式对话框的模板资源在设计时必须选中Visible属性(在属性对话框的More Styles页中设置),若没有选中,则必须调用对话框类的成员函数ShowWindow;否则对话框不可见,而模式对话框无需设置此属性。 非模式对话框通过调用CDialog:Creat

23、e函数来启动,而模式对话框使用CDialog: DoModal函数来启动。由于Create函数不会启动新的消息循环,非模式对话框与应用程序共用同一个消息循环,这样非模式对话框就不会垄断用户的输入。Create函数在显示了非模式对话框后就立即返回,而DoModal函数是在模式对话框被关闭后才返回的。 非模式对话框对象是用new操作符动态创建的,而模式对话框以对象变量的形式出现的。 非模式对话框的关闭是由用户单击OK或Cancel按钮完成的,与模式对话框不同,程序员必须分别重载这两个函数,并且在其中调用CWnd:DestroyWindow函数来关闭对话框。该函数是用于关闭窗口。 必须有一个标志表明

24、非模式对话框是否打开。应用程序根据该标志决定是打开一个新对话框,还是仅激活原来已经打开的对话框。通常可以用拥有者窗口中指向非模式对话框对象的指针(因为非模式对话框对象是用new操作符动态创建)作为这个标志,当对话框关闭时给该指针赋NULL值,表明该对话框对象已不存在了。二、填空题1引用2构造函数 析构函数3A(),B()4this, A *5静态数据成员 静态成员函数6friend7派生类 基类8public、protected、private9virtual10基类 派生类自身11成员函数12. 运行时13. 静态联编,动态联编14. public vehicle ,public vehic

25、le15. 基类 A中的成员函数. 派生类B中的成员函数.16. C类 B类17抽象函数18. 优先级 2. 1 219. A operator +(int) friend A operator +(A &,int)20. Time Time:operator +(int)21输入消息、控制消息、系统消息、用户消息22WM_LBOTTONDOWN OnLButtonDown23CDC24设备环境25模态对话框 非模态对话框26构造函数 OnInitDialog()函数27CColorDialog、CFileDialog、CFindReplaceDialog、CFontDialog、CPrint

26、Dialog28CeditView29OnNewDocument()30Invalidate()或InvalidateRect()31下一行323 和 3.2 335 34代码354i 36单继承37不能够38AB( )39 a 40241静态42友元43virtual44=045抽象类46抽象类47AB481 5 14 30 55 91 140 20449输入2个整数相加的结果,结果正确返回1,否则返回050将字符串中的小写字母转换为大写51非多态调用52第一操作数53operatro double()54operator +=(x,y)55 (istream &,CSAI &)56. 不能

27、57. 多态58. return mid low=mid+159. new charstrlen(aa)+1 A()delete a;三、编程题1 #include #include class Employee protected:char name20;char address100;char city20;char province20;char zipcode10;public: Employee(char *nm,char *addr,char *city, char *prov, char *zip); void ChangeName(char * newName); char * Display(char * buffer);Employee:Employee(char *nm, char *adr, char *cit, char *prov, char *zip) strcpy(name,nm);strcpy(add

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1