Visual C++NET课后答案Word下载.docx
- 文档编号:16714769
- 上传时间:2022-11-25
- 格式:DOCX
- 页数:42
- 大小:111.99KB
Visual C++NET课后答案Word下载.docx
《Visual C++NET课后答案Word下载.docx》由会员分享,可在线阅读,更多相关《Visual C++NET课后答案Word下载.docx(42页珍藏版)》请在冰豆网上搜索。
VisualC++.NET。
随着2000年6月微软.NET战略的实施,.NETFramework软件框架结构的建立,一个平台的变革已经来临了。
3.概述VisualStudio2005集成开发环境中各主要窗口的功能。
解决方案资源管理器提供项目及其文件的有组织的视图,并且提供对项目和文件相关命令的便捷访问。
类视图用于显示正在开发的应用程序中定义、引用或调用的符号。
资源视图显示项目中包含的资源文件。
对象浏览器可以选择和检查可用于项目的符号。
输出窗口可显示集成开发环境(IDE)中各种功能的状态消息。
工具箱显示可以被添加到VisualStudio项目中的各项控件的图标。
项目属性页是VisualStudio用户界面元素,允许为项目指定和应用项目设置。
4.概述.NET框架的主要结构。
.NET框架的主要结构如下图所示。
公共语言运行库(CommonLanguageRuntime,CLR):
负责满足此组件在其它组件上可能具有的依赖项外,还负责管理内存分配、启动和停止线程和进程,以及强制执行安全策略。
基础类库:
该框架为开发人员提供了统一的、面向对象的、分层的和可扩展的类库集。
通用类型系统(CommonTypeSystem,CTS):
定义了一组语言编译器必须遵循的规则,以定义、引用、使用和存储引用类型和值类型,用于数据类型统一。
5.利用VisualC++.NET可以创建哪些项目类型?
VisualC++.NET包含CLR、MFC、ATL、Win32、常规和智能设备五种项目类型的项目模板或应用程序向导。
●CLR项目模板包括:
ASP.NETWeb服务模板(C++)、类库模板(C++)、CLR控制台应用程序模板(C++)、CLR空项目模板(C++)、SQLServer项目、Windows控件库模板(C++)、Windows窗体应用程序模板和Windows服务模板(C++);
●ATL项目模板包括:
ATL项目、ATLServer项目和ATLServerWeb服务;
●MFC项目模板包括:
MFCActiveX控件、MFC应用程序和MFCDLL;
●Win32项目模板包括:
Win32控制台项目和Win32项目;
●常规项目模板包括:
自定义向导、空项目和生成文件项目;
●智能设备项目模板包括:
ATL智能设备项目、MFC智能设备ActiveX控件、MFC智能设备DLL、MFC智能设备应用程序和Win32智能设备项目。
6.什么是断点?
如何向应用程序中添加断点?
怎样一次性清除应用程序中所有的断点?
在应用程序的调试过程中,如何查看变量的值?
断点通知调试器应在某点上中断应用程序并暂停执行,发生中断时,则称程序和调试器处于中断模式。
在源窗口中,单击要设置断点的那行可执行代码,在快捷菜单中,转到“断点”,然后选择“插入断点”,即可插入断点,断点所在的行即出现红色圆圈。
转到断点,然后选择“删除断点”,即可删除断点。
可以通过快速监视来查看变量值,在调试程序时通过选择“调试”,选择“快速监视”打开快速监视对话框,在表达式栏输入需要计算的表达式即可查看变量或表达式的值。
7.简述调试程序中的使用的F5、F9、F10、F11和Shift+F11这几个键的使用?
F5:
调试运行。
F9:
在当前行插入断点。
F10:
单步骤调试。
F11:
按逐行运行。
Shift+F11:
程序会跳出当前过程。
8.新建一个单文档应用程序,该程序的标题为“第一个VisualC++.NET程序”,并在屏幕中央绘制奥运会五环旗,练习调试程序技巧。
创建MFC单文档程序,在OnDraw函数中选择不同颜色画笔进行绘制。
9.如何向一个MFC程序中添加基于MFC的类?
如何添加一个C++类?
选择“视图类”窗口,右键单击,选择“添加”“类”,在类别中选择“MFC”,在模板中选择“MFC”,单击“添加”,输入新建的类的相关信息单击“完成”即可。
第2章C++基础知识
1.面向对象技术方法的基本思想是什么?
其基本特征是什么?
面向对象方法的基本思想是,从现实世界中客观存在的事物(即对象)出发来构造软件系统,并在系统构造中尽可能运用人类的自然思维方式。
面向对象方法更强调运用人类在日常认识客观世界时的逻辑思维方法和过程,例如抽象、分类、封装、聚合、继承等等。
2.简述C++中类是如何定义的?
类中包含的数据成员和成员函数如何定义的?
在类内定义成员函数和类外定义成员函数的区别有哪些?
类声明的形式
class类名
{
private:
私有成员变量或成员函数
protected:
保护成员变量或成员函数
public:
公有成员变量或成员函数
};
数据成员的声明形式:
数据类型数据成员名;
函数成员的声明形式:
函数类型函数名(形参表);
类的成员函数的实现即具体定义该成员函数的函数体,有两种方式:
一是在类内声明时同时实现,另一种是在类内声明函数原型、在类外实现。
(1)类内实现的格式
函数类型函数名(形参表)
函数体
}
(2)类外实现的格式
函数类型类名∷函数名(形参表)
……//函数体
其中“类名∷”指定该成员函数的类属。
为保持类说明的代码简洁、方便阅读,建议将类的成员函数,尤其是函数体代码较长的函数成员以第2种方式加以实现。
在类内直接实现的成员函数将自动地被作为内联函数处理(违反内联精神的函数除外),在类外实现的成员函数,可以通过将类内的原型声明前加inline修饰,显式地将其说明为内联函数。
3.类中的成员有哪几种访问属性?
各有什么作用?
类中的成员变量或成员函数之前的private、protected和public,代表这个成员的访问控制权限。
private成员表示此成员只能被本类的其它成员函数访问,protected成员表示此成员只能被本类或其派生类的成员函数访问,public成员表示此成员的访问不受限制。
4.对象是什么?
如何创建对象?
构造函数和析构函数的作用是什么,有哪些特殊之处?
类的具体的实例,称为对象。
C++语言中对象的定义格式为:
类名对象名;
或
类名对象名(参数表);
构造函数是一种特殊的成员函数,必须被声明为公有成员,其作用是为类的对象分配内存空间,进行数据成员的初始化。
对象创建时,系统会自动地调用构造函数完成对象内存空间的分配和初始化工作。
按不同的用户自定义构造方式,构造函数可以重载为多个,其中有一个比较特殊的构造函数——拷贝构造函数,它是以同类已有对象为新构造的对象初始化,当对象间进行赋值运算、以类对象作为函数的参数或返回值时,将调用拷贝构造函数,若用户未定义,它也将由系统自动生成。
类中有指针型成员时,默认的拷贝构造会造成拷贝构造出的对象共享原对象的该指针型成员的空间,使用时应注意。
析构函数也是一种特殊的成员函数,也被声明为公有成员,作用是释放分配给对象的内存空间,并做一些善后工作。
析构函数的性质:
析构函数的名字必须与类名相同,且在名字的前面要“~”;
析构函数没有参数,没有返回值,不能重载,在一个类中只能有一个析构函数;
析构函数也可以访问类的所有成员;
析构函数可以是虚函数;
当撤销对象时,系统会自动调用析构函数完成占用空间的释放和善后工作,将内存空间的使用权交还给操作系统。
5.面向对象中继承的作用是什么?
在C++如何支持集成机制?
继承是C++语言的面向对象思想的一种机制,是面向对象程序设计的关键技术之一。
该机制自动地为一个类提供来自另一个类的操作和数据,这使得程序员只需在新类中定义已有类中没有的成分来建立新类,使得已有代码的利用率和程序员的工作效率都得到提高。
在C++语言中,继承具体是指新的类可以直接获得已有类的数据成员和函数成员的而不必重复定义它们。
新类称为派生类或子类,原有类称为基类或父类。
派生类继承基类的属性和方法。
派生类也声明了新的属性和新的方法,剔除了那些不适合于其用途的继承下来的操作。
这样,派生类可以重用基类的代码,专注于为派生类编写新代码。
减少了编程的工作量,实现代码复用。
6.派生类的构造过程和析构过程如何?
如何定义派生类的构造函数?
派生类不继承基类的构造函数,因此,派生类的构造函数既要支持自己新增数据成员的初始化还要支持基类继承来的数据成员的初始化,其执行顺序是先基类部分再派生类自身。
派生类析构函数的功能与基类析构函数的功能一样,也是在对象撤销时进行必需的清理善后工作。
析构函数不能被继承,如果需要,则要在派生类中重新定义。
与基类的析构函数一样,派生类的析构函数也没有数据类型和参数。
派生类析构函数只需完成对派生类新增成员的清理和善后即可,基类的清理善后工作系统会自动调用其析构函数来完成可,其执行顺序是先派生类再基类。
派生类的构造函数的定义形式为:
派生类名(参数1,参数2,…,参数n-1,参数n):
基类名(参数1,参数2,…)
派生类新增成员1=参数n-1;
派生类新增成员2=参数n;
7.C++中的多态有哪些?
虚函数的动态性如何体现的?
运行时多态(虚函数多态)与编译时多态(重载函数多态)。
在继承关系的类族体系中,允许用基类的指针指向派生类对象或用派生类对象来初始化基类的引用,这种情况称为赋值兼容,赋值兼容使得类的访问更加灵活,由于基类与派生类间的兼容性赋值出现在程序运行时,因此要解决这种运行时多态问题使用了虚函数机制。
在基类中使用基类的虚成员函数与普通成员函数是一致的,但派生类对待二者就不同了,基类中的普通函数是接口和实现一起被派生类继承,而虚函数仅是接口部分被继承,其实现是在派生类中重新定义的。
8.设计日期类Date,包含年、月、日3个数据成员以及构造函数、析构函数和其它成员函数,并在主函数中创建对象完成测试。
classDate
Date(intxy,intxm,intxd);
~Date(void);
voidSetYear(intxy)
{
year=xy;
}
intGetYear()
returnyear;
intyear,month,day;
Date:
:
Date(intxy,intxm,intxd)
month=xm;
day=xd;
主程序略
9.设计一个钟表类Clock,该类有Hour,Minute,Second三个数据成员分别用来表示时分秒,两个成员函数SetTime,ShowTime分别用来设置时间和显示时间。
并设计一个主函数进行测试。
仿照上题
10.MFC中有哪些模版类?
MFC对C++中的STL进行了再次封装,形成了一系列的木板类,例如CList、CArray、CMap等,其意义也类似。
第3章Windows程序分析
1.简述什么是窗口、句柄、消息和消息队列?
API是什么?
SDK又是什么?
窗口是Windows应用程序中一个非常重要的元素,一个Windows应用程序至少要有一个窗口,称为主窗口。
窗口是屏幕上的一块矩形区域,是应用程序与用户进行交互的接口。
利用窗口,可以接收用户的输入,以及显示输出。
在Windows环境中,句柄是一种标识符,用来标识模块(module)、任务(task)、实例(instance)、文件(file)、内存块(blockofmemory)、菜单(menu)、控制(control)、字体(font)、 资源(resource)和GDI对象(GDIobject)等项目。
一个消息,是系统定义的一个32位的值,唯一的定义了一个事件,向Windows发出一个通知,告诉应用程序某个事情发生了。
Windows程序是事件驱动的,事件驱动程序设计是围绕着消息的产生与处理而展开的。
消息可由应用程序本身产生,也可由运行的其它应用程序产生,还可以由用户或Windows产生,每当事件发生时,Windows做出记录并将相应的消息分配到有关的应用程序中去。
消息队列则是在消息的传输过程中保存消息的容器。
队列的主要目的是提供路由并保证消息的传递;
如果发送消息时接收者不可用,消息队列会保留消息,直到可以成功地传递它。
Windows操作系统提供给应用程序编程的接口(ApplicationProgrammingInterface,API),简称为API函数。
SDK的全称是SoftwareDevelopmentKit,中文译为软件开发包。
SDK实际上就是开发所需资源的一个集合。
2.Windows的应用程序特点有哪些?
通过对程序的框架进行分析,简述Windows程序运行过程。
Window应用程序的特点就是消息驱动,当系统或者用户要求应用程序完成某一个任务的时候,所依靠的就是消息,系统会把用户的要求或者系统的要求放到一个消息结构中,然后发送给应用程序,再去处理。
Windows程序具有相对固定的结构,大部分过程由系统完成,编程中只要按一定的格式填写系统留给客户的那一小部分。
所需要完成的有:
窗口类的定义、窗口的建立、消息函数的书写、消息循环。
工作流程如下:
入口“_tWinMain”、“MyRegisterClass”、“InitInstance”、“while消息循环”。
函数由入口开始执行,之后调用MyRegisterClass注册窗口类,之后InitInstance生成并显示窗口,这样之后,就完成了一个窗口的初始化工作了(当然,在MyRegisterClass,InitInstance中都需要调用相应的API函数来具体的实现,不过这里重点分析的是它的结构,所以不考虑它的具体实现细节),然后就是维护消息循环。
至此,这个程序的基本结构就基本建立了,程序的运作依靠这个消息循环来推动。
3.MFC的优点有哪些?
文档和视图的作用是什么?
MFC应用程序对WindowsAPI函数进行封装,使得不需要理解Windows内部编程机制就可以通过程序向导或模板来创建相应的应用程序框架,这些框架能满足大多数开发者的需要,并且不必添加太多的代码就能实现最常用的程序功能。
视图类主要用于表示文档中的数据,此类中拥有一个重要的函数OnDraw函数用于绘制图形,即视图显示的内容通过此函数实现。
文档类主要用于管理程序的文档,此类中的OnNewDocument函数用于创建新文档时的初始化,类中另外一个重要的函数Serialize用于执行文档的串行化(打开文档和保存文档)。
4.单文档应用程序框架中各个类的作用和功能是什么?
CWinApp、CDocument、CView、CMainFrame类
CWinAPP,主要用于创建应用程序实例,创建的CTestApp类自动重载了父类的InitInstance函数,此函数用于初始化应用程序实例,在函数体内创建了文档模板用于管理文档、视图和框架窗口。
CView视图类主要用于表示文档中的数据,此类中拥有一个重要的函数OnDraw函数用于绘制图形,即视图显示的内容通过此函数实现。
CDocument文档类主要用于管理程序的文档,此类中的OnNewDocument函数用于创建新文档时的初始化,类中另外一个重要的函数Serialize用于执行文档的串行化(打开文档和保存文档)。
CFrameWnd,此类主要用于管理程序的框架窗口,CMainFrame类中的函数PreCreateWindow用于预创建窗口,可以通过修改函数参数cs来修改窗口的样式。
类中重载的OnCreate函数用于创建应用程序框架窗口,载入相关资源,例如工具栏、菜单栏等。
5.MFC应用程序向导提供了哪几种类型的应用程序?
各有什么不同?
单文档、多文档、基本对话框应用程序。
单文档和多文档程序都提供了文档视图机制,单文档窗口一次只能打开一个文档框架窗口,而多文档应用程序在应用程序的一个实例中打开多个文档框架窗口,这些窗口称作子窗口。
这些文档可以是同一类型的,也可以是不同类型的。
对话框程序不支持不提高文档视图框架结构,以一个默认对话框作为程序主界面。
6.什么是消息?
简述消息驱动机制,消息的类别有哪此?
Windows中的消息虽然很多,但是种类并不繁杂,大体上有三种:
窗口消息、命令消息和控件通知消息。
7.如何创建映射消息?
如何为基于MFC的类重载虚函数?
消息映射创建分为类,一类通过IDE可以选择需要被映射的类,然后选择消息,再选择添加消息映射函数,另一类需要用户手工添加代码,在头文件添加消息映射函数声明,在实现文件添加消息和消息映射函数。
选择需要重载的函数,选择属性,再选择重载,找到需要重载的函数,选择添加重载即可。
8.概述MFC消息机制。
Windows中有哪些常用消息?
在MFC框架下,一般一个消息的处理过程是这样的:
函数AfxWndProc接收Windows操作系统发送的消息。
函数AfxWndProc调用函数AfxCallWndProc进行消息处理,这里是把对句柄的操作转换成对CWnd对象的操作。
函数AfxCallWndProc调用CWnd类的函数WindowProc进行消息处理。
注意AfxWndProc和AfxCallWndProc都是AFX的API函数。
而WindowProc已经是CWnd的一个方法。
所以可以注意到在WindowProc中已经没有关于句柄或者是CWnd的参数了。
WindowProc调用方法OnWndMsg进行正式的消息处理,即把消息派送到相关的方法中去处理。
Windows中常用的消息及其作用在3.3.3节中详细介绍。
9.创建一个单文档应用程序,建立鼠标右键单击消息,每单击一次数出单击的坐标。
创建单文档程序,在视图类中添加右键消息映射,设定计数器,每右键单击一次,计数器加一。
10.用户自定义消息如何创建?
使用消息发送函数SendMessage和PostMessage发出消息有什么区别?
自定义消息步骤:
第一步:
定义消息。
#defineWM_MYMESSAGEWM_USER+1。
第二步:
实现消息处理函数。
afx_msg返回类型XXXX(参数);
实现文件中定义此消息处理函数:
返回类型类:
XXXX(参数){……}
第三步:
在视图类的消息块中,使用各类消息映射宏指令将消息映射到消息处理函数中。
PostMessage只负责将消息放到消息队列中,不确定何时及是否处理,SendMessage要等到受到消息处理的返回码(DWord类型)后才继续,PostMessage执行后马上返回,SendMessage必须等到消息被处理后才会返回。
11.创建一个单文档应用程序,记录鼠标左键单击次数,若是7的倍数时,弹出消息框,显示当前单击了多少次。
创建单文档程序,设定计数器,添加鼠标左键按下消息映射函数,添加相关代码。
第四章习题参考答案
1.简述列表框控件与组合框控件的异同?
列表框与组合框控件为用户提供了包含一些选项和信息的可滚动列表。
●列表框:
显示为一个可滚动的列表,允许用户从列表中选取所包含的选项,但不允许输入新的选项(即新值)。
VisualFoxPro包含一个列表框生成器,可创建一个简单的列表框。
●组合框:
是文本框与列表框的组合,平时只看见一个项,用鼠标单击下拉三角按钮可看到多项的列表。
允许输入新的选项(即新值)或选取所包含的选项。
2.简述列表框与列表视图之间的异同?
ListBox
ListBox控件显示项目列表,从其中可以选择一项或多项。
如果项目总数超过了可显示的项目数,就自动在ListBox控件上添加滚动条。
功能相对简单。
ListView
ListView控件可使用四种不同视图显示项目。
通过此控件,可将项目组成带有或不带有列表头的列,并显示伴随的图标和文本。
列表控制提供了对Windows列表功能操作的基本方法,而使用列表视的视函数可以对列表视进行各种操作,通过调用视成员GetListCtrl获取嵌在列表视内列表控制的引用(GetListCtrl&
ctrlList=GetListCtrl()),就可以和列表控制一样进行各种操作。
操作一个列表控制和视的基本方法为:
创建列表控制;
创建列表控制所需要的图像列表;
向列表控制添加表列和表项;
对列表进行各种控制,主要包括查找、排序、删除、显示方式、排列方式以及各种消息处理功能等;
最后撤消列表控制。
对于一个列表控制,其最典型最常用的显示控制方式为:
大图标方式(LVS_ICON)、小图标方式(LVS_SMALLICON)、列表显示方式(LVS_LIST)和详细资料(即报告LVS_REPORT)显示方式。
这可以通过设置其显示方式属性来实现。
要控制列表所在窗口的风格,可通过功能函数GetWindowLong和SetWin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual C+NET课后答案 NET 课后 答案