您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > Visual-C++.NET课后答案
第一章习题参考答案1.简述项目和解决方案的概念和区别,项目中常见的文件有哪些?各代表什么意义?答:VisualStudio提供了两类容器,有效地管理开发工作所需的项,如引用、数据连接、文件夹和文件。这两类容器分别叫做解决方案和项目。创建新项目时,VisualStudio默认会自动生成一个解决方案。然后,可以根据需要将其它项目添加到该解决方案中。解决方案资源管理器提供整个解决方案的图形视图,开发应用程序时,该视图可管理解决方案中的项目和文件。项目中常见的文件包括:Solname.sln:在开发环境中使用的解决方案文件,它将一个或多个项目的所有元素组织到单个的解决方案中,此文件存储在父项目录中。Projname.suo:在开发环境中使用的解决方案选项文件,它存储为解决方案创建的所有用户选项,以便每次打开项目的解决方案时,它都具有所需的外观并包含所有选择的自定义设置,此文件存储在父项目目录中。Projname.vcproj:开发环境中使用的项目文件,以前的版本中为Projname.dsp,存储项目的专用信息,每个项目都有一个单独的.vcproj文件。此文件存储在父项目目录中。Projname.idl:包含类型库的接口说明语言源代码的文件,使用此文件生成类型库,生成的库向其它自动化客户端公开控件的接口。Projname.ncb:非编译浏览器文件,它包含分析器生成的由类视图使用的信息,如果此文件被无意间或故意删除,将自动重新生成它。2.VisualC++.NET发展历程哪些阶段?答:VisualC++.NET的发展大致经历了如下的几个阶段:第一阶段:VisualC++1.0和VisualC++1.5,这两个版本主要用于开发16位应用程序,对应的平台是以DOS和Win3.x为代表的操作系统。第二阶段:主要包括VisualC++2.x、VisualC++4.x、VisualC++5.x、VisualC++6.x。其中,VisualC++2.x可以说是VisualC++系列产品中称得上变革的版本之一,在这个版本的VisualC++中,提供了著名的MFC来封装Win32SDK。第三阶段: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{public:Date(intxy,intxm,intxd);~Date(void);voidSetYear(intxy){year=xy;}intGetYear(){returnyear;}private:intyear,month,day;};Date::Date(intxy,intxm,intxd){ye
本文标题:Visual-C++.NET课后答案
链接地址:https://www.777doc.com/doc-8567620 .html