12014年秋季学期计算机科学与技术专业《C++程序设计》课程期末复习提纲****同学们要会做本提纲以及作业中涉及的题目。*****一、复习方法指导和总体要求本次命题,重在考核C++语言基本语法和程序设计;VC++部分的基础知识与基本操作。请重点复习各章要求的基本知识点。注:考试C++和VC++两部分知识都会考察,请同学们注意。二、参考资料使用教材:吕凤翥编著,《C++语言程序设计》,电子工业出版社;马石安、魏文平编著,《VisualC++程序设计与应用教程》,清华大学出版社。注:学习及复习时请以教材及PPT课件为主要学习资料,多媒体视频教学主要以PPT课件为讲课依据,如果学习中遇到难懂知识点,可参考多媒体视频教学中针对难点重点的详细讲解。PPT课件可从论坛C++语言板块置顶区下载。三、试卷结构1.单选题(每题2分,共20分)2.判断题(每小题2分,共20分)3.填空题(每空2分,共20分)4.分析下列程序的输出结果(每小题5分,共20分)5.简单回答下列问题(每小题4分,共20分)四、各章节知识点第一部分:C++第1至7章:这几章主要是复习C语言的内容,这些内容在C++语言中都要用到,同时又指出了C++语言对C语言的某些改进。这7章重点考察C++语言对C语言的改进部分:1.常量的定义格式(定义、重点)2.标准输入、输出(定义、运用、重点)3.函数的定义格式(运用)4.设置函数参数的默认值(定义、重点)5.函数的引用调用(运用、重点)6.内联函数和重载函数(定义、重点)7.引用的概念及应用(引用作函数参数)(定义、运用、重点)2第8章类和简单对象1.类的定义格式。两类成员和三种访问权限。(概念,重点)2.对象定义方法和对象成员表示方法。(概念,重点)3.构造函数和析构函数的功能、种类、特点。(概念,运用,重点)4.成员函数的特征:重载、内联、设置参数默认值。(概念)5.静态成员种类、特点、用法。(概念,运用,重点)6.友元函数的特点及用法。(概念,重点)第9章复杂对象1.各种对象的定义(或说明)、赋值及其使用。(概念,运用)(1)一般对象(重点)(2)对象指针(重点)(3)对象引用(4)对象数组(5)对象指针数组(6)常对象(7)子对象(初始化在构造函数的成员初始化列表中进行)(重点)(8)堆对象(运算符new和delete的用法)(重点)2.常成员(常数据成员和常成员函数)(概念,运用,重点)3.类型转换(一般数据类型转换为类类型和类类型转换为一般数据类型)(概念,理解)第10章继承性和派生类1.派生类中继承的基类中的成员的访问权限。(概念,运用,重点)基类中私有成员派生类不可直接访问。公有继承方式下,基类中公有成员和保护成员在派生类中仍然是公有的和保护的。私有继承方式下,基类中公有成员和保护成员在派生类中都是私有的。保护继承方式下,基类中公有成员和保护成员在派生类中都是保护的。2.单继承中派生类构造函数和析构函数的特点。(运用,重点)派生类的构造函数中显式或隐含的包含着直接基类的构造函数。显式包含的带参数的构造函数放在成员初始化列表中。派生类的析构函数中隐含的包含着直接基类的析构函数。3.赋值兼容规则。(概念)在公有继承方式下,派生类是基类的子类型,于是遵循如下规则:派生类的对象可以给基类对象赋值。派生类的对象可以给基类对象的引用初始化。派生类的对象的地址值可以给基类对象指针赋值。4.多继承、多继承的构造函数和析构函数的特点(定义、运用、重点)5.虚基类的定义格式及构造函数的特点(定义、重点)第11章多态性和虚函数1.运算符重载的概念和两种常用方式(本节重点是运算符重载的特点及使3用)。(概念,重点)2.静态联编、动态联编和虚函数(概念,运用,重点)静态联编是在编译时进行的,动态联编是在运行时进行的。虚函数是实现动态联编的重要条件。虚函数是非静态的成员函数。动态联编的条件还有公有继承和适当的调用虚函数的方式。使用对象引用和对象指针调用实现动态联编,而使用对象调用实现静态联编;使用成员函数调用虚函数实现动态联编,而使用构造函数调用虚函数实现静态联编。3.纯虚函数和抽象类(概念,重点)没有具体实现的虚函数称为纯虚函数。含有纯虚函数的类称为抽象类。抽象类不能定义对象,可以定义对象引用和对象指针。抽象类作为根基类。五、题型举例1.单选题(每题2分,共20分)选择结果填在()内1.下列对运算符重载的描述中,正确的是(D)。A.运算符重载可以改变结合性B.运算符重载可以改变优先级C.运算符重载可以改变操作数的个数D.运算符重载不改变优先级和结合性2.如果在类对象A的类中重载运算符“+”,则A+7的显示调用方式为(C)。A.A.operator(7)B.A-operator+(7);C.A.operator+(7)D.7.operator+(A)3.下列关于new运算符的描述中,错误的是(A)。A.使用new运算符创建动态对象可以不调用构造函数B.new运算符组成的表达式是一个地址值C.使用new运算符可创建一个对象,也可创建一个对象数组D.使用new运算符创建对象时可以进行初始化4.下列关于抽象类的描述中,错误的是(D)。A.抽象类中至少有一个纯虚函数B.抽象类不能定义对象C.抽象类可以定义对象引用D.抽象类的派生类一定不再是抽象类5.己知:类B中有一个成员函数说明如下:B&Set(B&a);下面对该成员函数返回值的描述中,正确的是(C)。A.该函数无返回值B.该函数返回值是类B对象C.该函数返回值是类B的对象的引用D.该函数返回值是指向类B的对象的指针2.判断题(每小题2分,共20分)4对者划∨,错者划×,填写在()内。(∨)1.创建堆对象时,要使用运算符new。(╳)2.静态对象的成员称为静态成员。(╳)3.拷贝构造函数具有类型转换的功能。(╳)4.动态联编的两个重要条件公有继承和虚函数都具备后一定实现动态联编。(∨)5.文本文件、二进制文件和随机文件的读写函数都是相同的。3.填空题(每空2分,共20分)1.类的静态成员包括静态数据成员和静态成员函数。2.子对象初始化应放在成员初始化列表中进行。3.静态联编是在编译时进行联编,动态联编是在运行进行联编。4.分析下列程序的输出结果(每小题5分,共20分)#includeiostrem.hclassTdate{public:Tdate(inti=2002,intj=11,intk=15);voidPrint();~Tdate(){cout“Destructor”dayendl;}private:intyear,month,day;};Tdate::Tdate(inti,intj,intk){year=i;month=j;day=k;cout“Cosntructor”dayendl;}voidTdate::Print(){coutyear‘/’month‘/’dayendl;}voidmain()输出结果为:{Tdated1(2002,12,23);Constructor23d1.Print();2002/12/23Tdated2(d1);2002/12/23d2.Print();Donstructor23}Donstructor235.简单回答下列问题(每小题4分,共20分)1.哪些数据成员的初始化一定要放在成员初始化列表中?哪种数据成员的5初始化放在类体外进行?答:常数据成员、子对象和直接基类的数据成员的初始化要放在成员初始化列表中。静态数据成员的初始化放在类体外。2.C++语言程序通常是如何进行磁盘文件操作的?答:(1)创建流对象(2)调用打开文件函数(3)读写操作(4)关闭打开的文件第二部分:VC++第1章VisualC++开发环境1、熟悉集成开发环境窗口2、掌握并应用AppWizard与ClassWizard3、熟悉开发环境,包括项目与项目工作区;集成开发环境的菜单栏;集成开发环境的工具栏;资源与资源编辑器等等第2章MFC应用程序1、掌握窗口、消息、事件、句柄等的概念2、理解MFC应用程序框架3、掌握消息映射与消息处理逻辑第3章图形与文本1、理解Windows应用程序绘图过程2、掌握图形设备接口和设备环境3、掌握画笔和画刷的使用4、了解文本及位图的处理第4章菜单、工具栏与状态栏1、掌握自定义菜单2、掌握自定义工具栏、移动、显示/隐藏等等3、了解状态栏第5章对话框1、掌握模态对话框与非模态对话框异同2、掌握属性页对话框特性及创建3、了解通用对话框第6章Windows常用控件1、掌握常用控件2、掌握CStatic、CEdit、CButton、CListBox、CSpinButtonCtrl、CSliderCtrl、CProgressCtrl基本使用6第7章文档与视图1、熟练掌握文档/视图结构2、掌握文档读写方法3、学会分割视图窗口4、了解多文档应用程序第10章多线程编程1、掌握线程与进程的概念2、掌握线程的创建、控制、通信、同步第11章数据库编程掌握几种常用数据库的特点及应用重点应掌握MFC内部机制及结构,VC++编程基本操作,各种重要控件的特点,VC++部分知识更注重于实践,看重同学们实际编程的水平。考题多以选择,填空,及问答为主。形式同作业一致。注重考察重点基础的地方。五、题型举例(1)项目工作区一般在集成开发环境的左侧。它展示一个项目的几个方面,它们分别是CLASSVIEW、RESOURCEVIEW和FILEVIEW。(2)Windows应用程序是按照(A)非顺序的机制运行的。A.事件→消息→处理B.消息→事件→处理C.事件→处理→消息D.以上都不对(3)所有的Windows应用程序都是用MFCAppWizard[exe]向导创建的。(f)(4)使用MFCAppWizard[exe]向导创建应用程序框架时,向导生成的文件名和类名是不可更改的。(f)(5)什么叫进程?什么叫线程?它们有什么区别和联系?进程和线程都是操作系统的概念。进程是应用程序的执行实例,它是操作系统分配资源单位,每个进程是由私有的虚拟地址空间、代码、数据和其它各种系统资源组成,进程在运行过程中创建的资源随着进程的终止而被销毁,所使用的系统资源在进程终止时被释放或关闭。线程是操作系统分配处理器的最基本单元,它是进程内部的一个独立的执行单元。进程是没有活力的,它是一个静态的概念。一个程序运行时,由系统自动创建一个进程。系统创建好进程后,实际上就启动执行了该进程的主线程,主线程以函数地址形式(一般为main()或WinMain()函数),将程序的启动点提供给操作系统。主线程终止了,进程也就随之终止。每一个进程至少有一个主线程,它无需由用户去主动创建,是由系统自动创建的。用户根据需要在应用程序中创建其它线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这些虚拟地址空间、全局变量和系统资源。