visual-c++实用教程部分课后习题答案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第2章C++面向对象程序设计2.1类和对象1.什么是类?类的定义格式?类的成员一般分为哪两部分?它们的区别如何?⑴“类”是对具有共同的属性特征和行为特征的对象的概括和抽象。⑵类的定义格式:class类名{[private:]私有数据成员和成员函数public:公有数据成员和成员函数};⑶类的成员一般分为数据成员和成员函数两部分。⑷数据成员一般用来表示对象属性特征,而成员函数一般表示了对象的可以进行的操作,即行为特征。2.类与结构体有什么区别?类中可以包含两类成员――数据成员和成员函数;而标准C语言中的结构体只能包含数据成员;但是C++中的结构体对C语言中的结构体有扩展,C++中的结构体也可以两类成员――数据成员和成员函数;因此C++中的类和C++中的结构体出来在定义方式上不一样之外(class,struct),还有就是它们的缺省封装字是不一样的,一个是private,一个是public。3.什么是对象?如何定义一个对象?对象的成员如何表示?⑴对象是类的实例,是类的变量。⑵对象的定义:类名对象名称;或:类名*对象指针;⑶对象成员的表示:对象名称.成员名字;或:对象指针→成员名字;4.什么是构造函数?构造函数有哪些特点?构造函数是类的成员函数,它有以下特点:?构造函数的名字必须与类名相同。?构造函数可以有任意的形参,但不能具有返回值。?定义对象时,编译系统会自动地调用构造函数。?构造函数可以重载5.什么是析构函数?析构函数有哪些特点?析构函数也是类的成员函数,它有以下特点:?析构函数名也应与类名相同,只是在函数名前面加一个波浪符~。?析构函数不能带任何参数,也没有返回值。?每个类有而且只能有一个析构函数。析构函数不能重载。6.什么是默认构造函数和默认析构函数?假如用户没有自己编写构造函数或析构函数,编译系统也会自动生成一个构造函数和析构函数,这就是默认的构造函数和析构函数,但是这两个函数没有任何参数,也不进行任何操作。7.什么是复制构造函数?它的功能和特点是什么?复制构造函数是一种特殊的构造函数,它用来在已存在的对象基础上建立一个新对象。复制构造函数的名称也和类名是一样的,但是它的形式参数,都是指向一个已经存在的对象,因此它的形式参数都是这种形式:“const类名&ob”,即是一个对象的引用。9.如何对对象进行初始化?对象的初始化都是通过构造函数进行的,只要在声明对象时,逐个添好构造函数的实参。11.什么是this指针?它有何作用?一个类可以同时有很多对象存在,许多不同的对象可以调用相同的成员函数,编译系统为了知道当前是那个对象在调用成员函数,因此定义了this指针,this指针其实就是指向当前对象的指针。12.什么是类的作用域?对象的生存期有何不同?类的作用域简称类域,它是指在类的定义中由一对花括号所括起来的部分,每一个类都具有相应的类域。类域中定义的变量不能使用auto,register和extern等修饰符,只能用static修饰符,函数也不能用extern修饰符。所谓对象的生存期是指对象从被创建开始到被释放为止的时间,按生存期的不同对象可分为如下三种:1、局部对象:当对象被定义时调用构造函数,该对象被创建,当程序退出定义该对象所在的函数体或程序块时,调用析构函数,释放该对象。2、静态对象:当程序第一次执行所定义的静态对象时,该对象被创建,当程序结束时,该对象被释放。3、全局对象:当程序开始时,调用构造函数创建该对象,当程序结束时调用析构函数释放该对象。}2.2继承和派生类20.派生类是如何定义的?它有哪些特点?⑴定义派生类的一般形式为:class派生类名:[引用权限]基类名{派生类新增的数据成员派生类新增的成员函数};⑵派生类继承了基类的所有数据成员和成员函数,并增加新的成员。21.派生类的继承方式有哪些?它们各有哪些特点?这是继承技术中比较关键的问题。从基类继承来的成员的引用,不是简单地把基类的私有成员和公用成员直接作为派生类的私有成员和公用成员来使用,而要根据基类成员的“封装权限”和派生类声明的“引用权限”共同决定。①当引用权限为public时,称为“公用派生类”。在公用派生类中,基类的public成员和protected成员仍然成为派生类中的public成员和protected成员;然而基类中的私有成员却成为了派生类中的“不可访问的成员”,不能被派生类使用。②当引用权限为private时,称为“私有派生类”。在私有派生类中,基类的公用成员和保护成员成为了派生类中的私有成员,基类的私有成员成为派生类“不可访问的成员”。③从以上两点可以看出,基类中的私有成员在派生类中都成为了“不可访问的成员”。因此在继承中经常使用另外一种封装字protected,被protected封装的成员称为“保护成员”,保护成员和私有成员相似,不能被外界引用,但它却可以被派生类的成员函数引用。22.在定义派生类的过程中,如何对基类的数据成员进行初始化?基类的数据成员初始化往往是通过基类的构造函数进行的,但是在么在建立派生类的对象时,是不会自动执行基类的构造函数,因而就会使基类中成员变量未初始化。所以在设计派生类的构造函数时,不仅要考虑派生类所增加的成员变量初始化,还应当考虑基类的成员变量初始化。在执行派生类的构造函数时,应当调用基类的构造函数。因此考虑到基类成员变量初始化后,派生类的构造函数一般形式为:派生类构造函数名(参数表):基类构造函数名(参数表)例如:student(intn,charnam[],chars,inta,charad[]):stud(n,nam,s)其中,student类是stud的派生类。23.在派生类中能否直接访问基类中的私有成员?在派生类中如何实现访问基类中的私有成员?在派生类中是不能直接访问基类中的私有成员的,要在派生类中访问基类中的私有成员,只能通过基类所提供的public或protected封装的成员函数进行。24.什么是虚基类?它的作用如何?在声明派生类时,在基类的引用权限前面加上virtual,就将基类声明成了虚基类,即:class派生类名:virtual[引用权限]基类名虚基类的引入主要是针对多重派生的,是为了消除派生类的二义性使用的。通过虚基类派生出来的新类,同一个成员变量在不同的派生类中都只有一个复制,当通过普通基类派生的新类,同一个成员变量,在不同的派生类中的副本是不一样的。第3章MFC基本应用程序的建立1.Windows的应用程序特点有哪些?参考书(p143~145)2.MFC的AppWizard(exe)提供了哪几种类型的应用程序?使用MFC的AppWizard可以创建下面三种类型的应用程序:(1)单文档界面的应用程序(SDI,singledocumentinterface);(2)多文档界面的应用程序(MDI,multipledocumentsinterface);(3)基于对话框的应用程序(dialogbased)。3.MFC有哪些机制?这些机制有什么用?4.用AppWizard创建一个多文档应用程序项目(MDI)Ex_MDIHello,比较MDI与SDI有哪些区别?SDI应用程序由应用程序类(CWinApp)、框架窗口类(CFrameWnd)、文档类(CDocument)、视图类(CView)和文档模板类(CSinSleDocTemplate)共同作用。MDI应用程序与SDI应用程序的主要差别在于:MDI有CMDIFrameWnd和CMDIChildWnd两个框架窗口类,前一个派生CMainFrame类,负责菜单等界面元素的主框架窗口管理;后一个派生CChildFrame类,负责相应的文档及其视图的子框架窗口维护。而SDI由框架窗口类CFrameWnd派生CMainFrame类。5.消息的类别有哪些?用ClassWizard如何映射消息?⑴窗口消息:窗口消息一般与创建窗口、绘制窗口、移动窗口和销毁窗口等操作相关。窗口消息的形式为WM_***,其中*的内容与每个窗口消息的内容有关。窗口消息只能被窗口或窗口对象处理,在MFC应用程序中,CView和CFrame及它们的派生类,以及自定义窗口类型都能处理窗口消息。⑵命令消息:命令消息一般与处理用户的某个请求或执行用户的某个命令相关。在MFC应用中,凡是从基类CCmdTarget派生的类都能处理命令消息,不仅窗口类CView、CFrame,而且文档类、应用程序类都可处理命令消息。一般通过选择菜单项、单击工具栏按钮、按加速键可产生命令消息。⑶控件消息:控件消息与控件窗口中某个事件的发生相关。如改变文本框控件窗口的内容时,有一个通知窗口内容发生变化的控件事件产生。当选择列表框控件的某个选项时,也有一个通知选项发生改变的控件事件发生。6.如何通过ClassWizard添加一个类?第4章对话框及常用控件1.什么是对话框?它分为哪两类?这两类对话框有哪些不同?对话框是CDialog类的派生类,它的主要功能是输出信息和接收用户的输入。对话框是一个特殊类型的窗口,任何对窗口的操作都可以在对话框中进行。对话框与控件是密不可分的,在每个对话框内一般都有一些控件,对话框依靠这些控件与用户进行交互。对话框可以分为两种类型:一是模式对话框;二是无模式对话框。⑴模式对话框:所谓的模式对话框是指对话框弹出时,用户必须向对话框进行相应的操作,在退出对话框之前,其所在的应用程序是不能往下执行的。⑵无模式对话框:无模式对话框是指对话框弹出后,一直保留在屏幕上,用户可以在对话框所在的应用程序中进行其他的操作。两种对话框在编辑器设计和使用ClassWizard进行编程时方法基本一致,但在创建和退出对话框窗口时的方式不同。在创建时,模式对话框是由系统自动分配内存空间,因此在对话框退出时,对话框对象自动删除。而无模式对话框则需要用户来指定内存,退出时还要自己删除对话框对象。在退出时,两种对话框所用的终止函数不一样。模式对话框通过调用CDialog::EndDialog来终止,而无模式对话框则是通过调用CWnd::DestroyWindow来终止。需要说明的是:由于函数CDialog::OnOK()和CDialog::OnCancel()是调用EndDialog的,因此无模式对话框必须用DestroyWindow来重载OnOK()和OnCancel()两个函数。另外,需要正确删除表示对话框的C++对象。2.什么是对话框模板、对话框资源和对话框类?⑴对话框模板:MFCDevelopStudio提供的对话框模板是用来创建用户对话框资源,用对话框模板创建的基本界面上,包括一个OK(确定)按钮和一个Cancel(取消)按钮等。可以移动、修改、删除这些控件,或者是增加新的控件到对话框模板,构成应用程序所需的对话框资源。⑵对话框资源:对话框资源是一个用户输入或取得数据的图形界面。这个图形界面是使用对话框编辑器在对话框模板上创建的,程序员可以在对话框模板上增加并编辑控件,生成对话框资源。当应用程序运行时,就可以得到一个对话框。⑶对话框对象MFC使用CDialog类来描述对话框,它是CWnd类的派生类。在CWnd类的基础上增加了数据交换的功能。当创建一个新的对话框资源后,使用ClassWizard可以创建一个对话框类的派生类。对话框对象实现了对话框和应用程序之间的通信。在应用程序中定义一个对话框对象后,在对话框关闭后,可以通过访问对话框对象的成员变量获得用户的输入数据。3.对一个对话框编程一般经过几个步骤?⑴创建对话框资源;⑵增加控件并设置控件属性;⑶设计对话框类;⑷模式或非模式方式显示对话框4.什么是控件?根据控件的性质可以将控件分为几类?控件是系统内部定义的能完成特定功能的一些组件,控件能够放置在一个对话框中,提供应用程序与用户交互的某种功能的类,根据控件的特性和功能,一般可以将其分为3类:Windows通用控件、ActiveX控件以及MFC新增控件,Windows通用控件一般都是从CWnd派生而来的。5.向对话框添加一个常用控件的方法有哪些?这些方法是否适用于ActiveX控件?6.什

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功