Visual C++应用开发pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:Visual C++应用开发pdf/doc/txt格式电子书下载
推荐语:
作者:青岛东合信息技术有限公司编
出版社:电子工业出版社
出版时间:2012-01-01
书籍编号:30466812
ISBN:9787121155703
正文语种:中文
字数:101085
版次:1
所属分类:教材教辅-大学
版权信息
书名:Visual C++应用开发
作者:青岛东合信息技术有限公司
ISBN:9787121155703
版权所有 · 侵权必究
编委会
主编: 韩敬海
副主编: 丁春强
特约策划人:吕 蕾
编委: 孙运彩 曹宝香 崔文善
王成端 吴海峰 孔繁之
陈龙猛 高仲合 薛庆文
李丽 黄先珍 吴明君
前言
随着IT产业的迅猛发展,企业对应用型人才的需求越来越大。“全面贴近企业需求,无缝打造专业实用人才”是目前高校计算机专业教育的革新方向。
该系列教材是面向高等院校软件专业方向的标准化教材。教材研发充分结合软件企业的用人需求,经过了充分的调研和论证,并充分参照多所高校一线专家的意见,具有系统性、实用性等特点。旨在使读者在系统掌握软件开发知识的同时,着重培养其综合应用能力和解决问题的能力。
该系列教材具有如下几个特色。
1.以应用型人才为导向来培养学生
强调实践:本系列教材以应用型软件及外包人才为培养目标,在原有体制教育的基础上对课程进行了改革,强化“应用型”技术的学习,使学生在经过系统、完整的学习后能够达到如下要求:
■ 具备软件开发工作所需的理论知识和操作技能,能熟练进行编码工作,并掌握软件开发过程的规范;
■ 具备一定的项目经验,包括代码的调试、文档编写、软件测试等内容;
■ 具备相当于一年的软件开发经验。
2.以实用技能为核心来组织教学
二八原则:遵循企业生产过程中的“二八原则”,即企业生产过程中80%的时间在使用20%的核心技术,强调核心教学,即学生在学校用80%的学习时间来掌握企业中所用到的核心技术,从而保证对企业常用技术的掌握。教材内容精而专,同时配以知识拓展和拓展练习,以满足不同层次的教学和学习需求。
3.以新颖的教材架构来引导学习
自成体系:本系列教材采用的教材架构打破了传统的以知识为标准编写教材的方法,采用“全真案例”和“任务驱动”的组织模式。
■ 理论篇:即最小教学集,包含了“二八原则”中提到的常用技术,以任务驱动引导知识点的学习,所选任务不但典型、实用,而且具有很强的趣味性和可操作性,引导学生循序渐进地理解和掌握这些知识和技能,培养学生的逻辑思维能力,掌握利用开发语言进行程序设计的必备知识和技巧。
■ 实践篇:多点于一线,以完整的具体案例贯穿始终,力求使学生在动手实践的过程中,加深对课程内容的理解,培养学生独立思考和解决问题的能力,并配备相关知识的拓展讲解和拓展练习,拓宽学生的知识面。
■ 结构灵活:本系列教材在内容设置上借鉴了软件开发中“低耦合高内聚”的设计理念,组织架构上遵循软件开发中的MVC理念,即在课程的实施过程中各高校可根据自身的实际情况(课程配比、时间安排、学生水平、教学情况等),在保证最小教学集的前提下可对整个课程体系进行横向(章节内容)、纵向(章节)裁剪。
4.提供全面的教辅产品来辅助教学实施
为充分体现“实境耦合”的教学模式,方便教学实施,另外还开发了可配套使用的项目实训教材和全套教辅产品,可供各院校选购。
项目篇:多线于一面,以辅助教材的形式,提供适应当前课程(及先行课程)的综合项目,遵循软件开发过程,进行讲解、分析、设计、指导,注重工作过程的系统性,培养学生解决实际问题的能力,是实施“实境”教学的关键环节。
立体配套:为适应教学模式和教学方法的改革,本系列教材提供完备的教辅产品,主要包括教学指导、实验指导、电子课件、习题集、实践案例等内容,并配以相应的网络教学资源。教学实施方面,提供全方位的解决方案(课程体系解决方案、实训解决方案、教师培训解决方案和就业指导解决方案等),以适应软件开发教学过程的特殊性。
本系列教材由青岛东合信息技术有限公司研制,历时两年,参与编著的有韩敬海、丁春强、赵克玲、高峰、张幼鹏、张旭平、孙更新、孙云彩、曹宝香、崔文善、王成端等。本书的特约策划人为吕蕾女士。参与本书编写工作的还有:青岛农业大学、潍坊学院、曲阜师范大学、济宁学院、济宁医学院等高校,期间得到了各合作院校专家及一线教师的大力支持和协作。在此技术丛书出版之际要特别感谢给予我们开发团队大力支持和帮助的领导及同事,感谢合作院校的师生给予我们的支持和鼓励,更要感谢开发团队每一位成员所付出的艰辛劳动。如有意见或建议,可访问我公司网站(http://www.dong-he.cn)或发邮件至dh_iTeacher@126.com。
iTeacher@ 教研组
2011年12月
理论篇
第1章 C++编程概述
本章目标
■ 了解C++的历史发展
■ 了解C++标准的制定
■ 了解C++的特性
■ 了解常见的几种C++编程工具
■ 掌握在VS 2008下编译与运行C++程序
■ 掌握基本的C++输入/输出方法
学习导航
任务描述
【描述1.D.1】
使用VS 2008编写一个控制台应用程序,输出“Hello C++”。
1.1 C++简介
C++是一种使用非常广泛的编程语言,支持过程化程序设计、数据抽象、面向对象、泛型等多种程序设计方法。
1.1.1 C++历史
C++是由C语言演变而来的,是20世纪80年代初由贝尔实验室的Bjarne Stroustrup博士开发的。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断地增加新特性——虚函数、运算符重载、多重继承、模板、异常、RTTI、命名空间逐渐被加入进来。因此,C++的许多特性是从C语言中派生的,是C语言的扩展,但更重要的是提供了面向对象编程的功能。
C++语言的发展大概可以分为以下三个阶段。
■ 第一阶段(20世纪80年代到1995年):这一阶段是早期的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额。
■ 第二阶段(1995年到2000年):这一阶段C++推出了标准模板库(STL)、Boost程序库,并加入了对泛型程序设计的支持。
■ 第三阶段(2000 年至今):这一阶段是 C++发展历史上的新高峰,出现了以 Loki、MPL等程序库为代表的产生式编程和模板元编程,这些新技术的出现和原有技术的融合,使C++成为当今主流程序设计语言中最复杂的一种。
1.1.2 C++标准
C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。制定ANSI/ISO C++的标准工作开始于1990年。
■ 第一版:1998年国际化标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。
■ 第二版:在2003年准时发布,即ISO/IEC 1482/2003。
■ C++0x版:新标准的更新原定于2009年,目前一般称为C++0x,但是由于各界对新特性存在很大的争议,C++0x最终国际投票已于2011年8月10日结束,所有国家都投出了赞成票。国际化标准组织于2011年9月1日出版发布ISO/IEC 14882:2011,C++2011正式成为新的C++标准。
1.1.3 C++特性
C++语言具有如下几个特性。
■ 高效:C++是与 C 语言同样高效且具有可移植性的多用途程序设计语言,为保证语言的简洁和运行的高效,很多特性都是以库(如 STL)或其他的形式提供的,而没有直接添加到语言本身。
■ 兼容性:与C语言尽可能兼容,藉此提供一个从C到C++的平滑过渡。
■ 广泛:支持多种程序设计方法,如结构化程序设计、面向对象程序设计、泛型程序设计等。
■ 跨平台:避免平台限定,C++中没有用于特定平台的限定。
1.2 C++编程环境
进行C++开发时需要相应的编程环境,以及使用联机帮助查找资料和学习。
1.2.1 主流开发工具
目前C++的应用主要集中在以下三种系统环境下:
■ UNIX/Linux
■ Windows
■ 嵌入式设备
不同的系统环境下往往采用不同的C++开发工具。
1.UNIX/Linux
在UNIX/Linux系统环境下进行C++开发时,主要使用以下开发工具的组合。
■ 编译器:gcc;
■ 编辑器:vi/vim/emacs;
■ make:gnu make;
■ 版本管理:cvs;
■ 代码阅读:cscope、ctags等。
2.Windows
在Windows系统环境下,例如Windows XP、Windows 7,主要有以下三种C++开发工具:
■ Visual Studio系列
■ C++Builder
■ Eclipse
3.嵌入式设备
用于嵌入式设备的C++开发工具与所采用的具体芯片有关,其典型代表如下:
■ 用于ARM芯片开发的ADS、RealView MDK、ARM Realview Developer Suite、IAR Embed Workbench for ARM等;
■ 用于51系列单片机的Keil C、IAR C51;
■ 用于AVR系列单片机的IAR for AVR、ICC AVR等;
■ 其他的专用芯片的开发工具。
注意 目前在PC上流行的主要是微软的Visual Studio系列和GNU GCC,其他的IDE都是衍生产品。本书所采用的IDE是Visual Studio 2008。
1.2.2 Visual Studio
Visual Studio是目前最流行的Windows平台应用程序开发环境,它是集成化的开发环境,该环境可以开发多种语言的程序,例如Basic、C#、C++等,对于开发C++程序的功能部分,程序员通常称之为Visual C++(简称VC)。Visual Studio历年发行的版本如表1-1所示。
表1-1 Visual Studio版本

其中,本书所使用的开发工具是Visual Studio 2008,简称VS 2008。在VS 2008中引入了250多个新特性,主要在三个方面为开发人员提供了关键改进——快速的应用程序开发、高效的团队协作、突破性的用户体验。
注意 有关Visual Studio 2008的下载、安装及使用参见本章实践篇。
1.2.3 联机帮助
Visual Studio的联机帮助是以MSDN(Microsoft Developer Network)的形式出现的。MSDN是一个以Visual Studio和Windows平台为核心整合的开发虚拟社区,包括技术文档、在线电子教程、网络虚拟实验室、微软产品下载等一系列服务。MSDN作为一个应用程序单独运行,需要单独安装。在获得并安装了MSDN后,就可以使用包括Visual C++在内的整套Visual Studio开发环境的在线帮助。
要从Visual Studio中访问MSDN,可以从“帮助”菜单中执行“搜索”、“目录”或“索引”命令,即可运行MSDN,MSDN的工作窗口如图1-1所示。
图1-1
通过MSDN窗口中的索引来搜索通常是最有效的方法。MSDN索引在关键字和一系列的相关文章列表之间建立了联系,这使得可以快速找到所需要的信息。
另外,在Visual Studio内按F1键可以快速调出MSDN帮助窗口,如果先选中需要查询的内容,再按F1键,MSDN帮助窗口会显示相关的帮助条目。
1.3 第一个C++程序
C++源文件以“.cpp”为扩展名,头文件以“.h”为扩展名,一个C++应用程序一般有多个源文件和头文件。C++应用程序的基本结构如下:
■ 在完整的C++程序里,一般有多个类,类的定义在头文件中,类的实现在源文件中;
■ C++程序必须有一个入口函数,控制台程序的入口函数是main()函数,Windows窗体程序的入口函数是WinMain()函数。
下述代码用于实现任务描述1.D.1,使用VS 2008编写Hello C++控制台应用程序。
【描述1.D.1】Hello.cpp
上述代码需要注意以下几点内容。
■ 注释
C++支持两种注释格式://和/*…*/。//用于单行注释,/*…*/用于多行注释。
■ main()函数
C++控制台程序的入口函数是main()函数,该函数有且只有一个。
■ iostream是C++的流对象所对应的头文件
流是C++用来进行控制输入和输出的系统对象。其中cout对象用来进行输出,cin对象用来进行输入。例如,要通过键盘输入一个整数,代码如下:
其中,“>>”符号是输入操作符,与cin对象匹配使用,可以从键盘上接收数据;而“<<”符号是输出操作符,与cout对象匹配使用,可以将信息输出到屏幕中进行显示。
按下“Ctrl+F5”组合键,运行Hello.cpp程序代码,执行结果如下:
注意 按下“F5”键,程序将调试运行,运行结束后,控制台窗口会自动关闭;按下“Ctrl+F5”组合键,程序将直接运行,运行结束后控制台窗口不会关闭,按任意键后可以关闭。
1.4 输入/输出
C++并没有直接定义进行输入或输出(IO)的任何语句,这种功能是由标准库提供的。IO库提供了大量的功能,然而,对许多应用包括本书的例子而言,编程者只需要了解一些基本概念和操作即可。
1.标准输入与输出对象
标准库定义了4个IO对象。
■ cin对象:该对象称为标准输入对象,读作“see-in”,属于istream类型,用于从标准输入终端(通常是键盘)上获得数据,并将这些数据加入到输入流中。
■ cout 对象:该对象称为标准输出对象,读作“see-out”,属于ostream类型,用于将输出流中的数据发送到标准输出设备(通常是显示器),并在标准输出设备上进行显示。
■ cerr对象:该对象称为错误对象,读作“see-error”,也是属于ostream类型,用于输出警告和错误信息给程序的使用者。
■ clog 对象:该对象称为日志对象,读作“see-log”,也是属于ostream类型,用于输出程序执行的一般日志信息。
一般情况下,系统将这些对象与执行程序的窗口联系起来。这样,当用户从cin输入时,数据从执行程序的窗口读入;当写到cout、cerr或clog时,输出写至同一窗口。
2.使用cout对象进行输出
使用cout对象可以输出内容,示例代码如下:
上述代码中使用“using namespace std”语句引入标准库的命名空间,这样可以在使用cout和cin对象时,省略命名空间std。
cout对象用到的输出操作符“<<”,其实是ostream类重载的运算符操作,该操作接受两个操作数:左操作数必须是ostream对象;右操作数是要输出的值。操作符将其右操作数写到作为其左操作数的ostream对象。每次调用“<<”操作将再次返回ostream类对象的引用(即返回其左操作数作为结果),因此,在cout输出语句中可以连续使用两次输出操作符(<<操作符)。
在C++中,每个表达式都会产生一个结果,通常是将操作符作用到其操作数所产生的值。当操作符是输出操作符时,结果是左操作数的值。也就是说,输出操作返回的值是输出流本身。
3.使用cin对象进行输入
使用cin对象可以输入内容,示例代码如下:
上述代码中,变量v1、v2是int类型,int类型是一种代表整数值的内置类型。这些变量未初始化,表示没有赋给它们初始值。这些变量在首次使用时会读入一个值,因此可以没有初始值。
输入操作符(>>)行为与输出操作符相似,是istream类重载的“>>”操作。它接受一个istream对象作为其左操作数,接受一个对象作为其右操作数,并且从istream操作数读取数据并保存到右操作数中。像输出操作符一样,输入操作符返回其左操作数作为结果,因此可以将多个输入操作合并成单个语句,即上述代码中的“cin>>v1>>v2;”与下列操作是等价的:
输入操作的结果是从标准输入设备读取两个值,将第一个值存放在v1中,第二个值存放在v2中。
注意 C++允许对一个已有的运算符,例如“+”、“-”等进行重新定义以适应其不同的数据类型。关于运算符重载的内容本书不做详细介绍。
小结
通过本章的学习,学生应该能够学会:
■ C++是从C语言演变而来的,是C语言的扩展;
■ C++是具有国际标准的编程语言,通常称作ANSI/ISO C++;
■ C++和C语言一样,是高效且可移植的多用途程序设计语言;
■ 为保证语言的简洁和运行的高效,C++的很多特性都是以库(如 STL)或其他的形式提供的,而没有直接添加到语言本身;
■ C++源文件以“.cpp”为扩展名,头文件以“.h”为扩展名,一个C++应用程序一般有多个源文件和头文件;
■ C++程序必须有一个入口函数,控制台程序的入口函数是main()函数,Windows窗体程序的入口函数是WinMain()函数;
■ C++通过标准库提供的流来进行输入/输出。
练习
1.下列关于C++描述错误的是______。
A.C++是从C语言演化而来的
B.C++是具有国际标准的编程语言
C.C++和VC是一个概念
D.在完整的C++程序里,一般有多个类。类的定义在头文件中,类的实现在源文件中
2.简述C++的特点。
3.编写一个C++控制台应用程序,在控制台输出“欢迎来到C++世界!”。
第2章 C++基础
本章目标
■ 掌握C++中的变量、常量
■ 掌握C++的基本数据类型
■ 掌握数据类型的转换
■ 掌握运算符和表达式的使用
■ 掌握流程控制结构
■ 掌握数组的定义和使用
■ 掌握定义和使用二维数组的方法
■ 掌握指针的定义和运算
■ 掌握指针作为函数参数传递数据的方法
■ 掌握动态内存的分配和释放
■ 掌握引用的定义和初始化
■ 掌握引用作为函数参数传递数据的方法
■ 掌握指针和引用的区别
■ 掌握函数的定义、声明和调用方法
■ 掌握C风格的字符串的定义和操作
■ 熟悉字符集编码格式
学习导航
任务描述
【描述2.D.1】
任意输入3个整数,分别输出其中最大值和最小值,并分别检测是奇数还是偶数。
【描述2.D.2】
输入一个年份,由程序判断该年是否为闰年。
【描述2.D.3】
任意输入一个数字,输出其对应的月份和该月份对应的天数。
【描述2.D.4】
编写一个程序,打印九九乘法表。
【描述2.D.5】
输入两个年份,输出这两年之间的闰年。
【描述2.D.6】
使用数组存储5个整数,输出其中最大值和最小值。
【描述2.D.7】
使用数组实现矩阵的存储。
【描述2.D.8】
使用函数求两个数的积。
【描述2.D.9】
使用指针作为函数参数实现两个数的交换。
【描述2.D.10】
使用指针作为函数参数实现多个数的求和功能。
【描述2.D.11】
利用new和delete演示动态内存的操作。
【描述2.D.12】
使用引用作为函数参数实现两个数的交换。
2.1 常量和变量
常量和变量是C++程序设计的基础,用于表示存储的数据。
2.1.1 标识符
在各种编程语言中,通常都要为程序中处理的各种变量、常量、方法、对象和类等起个名字作为标记,以后就可以通过名字来访问或修改某个数据的值,这些名字称为标识符。
在C++中,标识符必须以字母、下画线(_)或美元符($)开头,后面可以跟字母、数字、下画线或美元符。
在定义标识符时,应了解其命名规则:
■ 标识符可以包含数字,但不能以数字开头;
■ 除下画线“_”和“$”符号外,标识符中不包含任何特殊字符,如空格;
■ 标识符区分大小写,比如,“abc”和“Abc”是两个不同的标识符;
■ 对于标识符的长度没有限制;
■ 不能使用C++关键字作为标识符。
如myvar、_myvar、$myvar、_9myvar都是一些合法的标识符,而下列标识符则是非法的:
注意 所有的C++关键字都是小写的,例如true、false,而TRUE、FALSE等都不是C++关键字,而是Microsoft新定义的数据类型。
2.1.2 常量
在C++中,利用const关键字来定义常量,常量被定义后,不允许再进行更改。
常量定义的基本格式如下:
其中:
■ const是关键字,表示要定义的标识符是常量,必须注明;
■ data_type是C++的任意数据类型之一;
■ var_name是常量名,必须符合标识符命名规则;
■ 利用“=”对常量值进行初始化。
常量定义举例:
注意 在编程过程中常量名习惯采用全部大写字母,如果名称中含有多个单词,则单词之间以“_”分隔。此外,常量在定义时需要进行初始化,初始化后,在应用程序中就无法再对该常量赋值了。
2.1.3 变量
变量是C++程序中的基本存储单元,它的定义包括变量名、变量类型和作用域几个部分。在C++中,所有的变量必须先声明再使用。其定义的基本格式如下:
其中:
■ data_type是C++的任意数据类型之一;
■ var_name是变量名,必须符合标识符命名规则;
■ 利用“=”对变量值进行初始化。
例如:
可以同时声明多个同一数据类型的变量,变量之间用“,”隔开,例如:
2.1.4 变量作用域
变量被定义为只在某个程序块(使用“{”和“}”包含起来的代码块,是一个单独的模块)内或只在方法体内有效,这种类型的变量通常被称为“局部变量”,局部变量的作用范围有限,只在相应的方法体内或程序块内有效,否则这些变量无效。
声明一个变量的同时也就指明了变量的作用域。因此,在某个作用域内声明一个变量后,该变量就成为局部变量,离开了变量作用域,该变量就不能再被访问。另外,在一个确定的域中,变量名应该是唯一的,否则编译器将报错。
下列代码演示了局部变量的作用域。
【代码2-1】ScopeVar.cpp
在上述代码中,变量num是在main函数中声明的,因此其作用域为main所在的大括号内,在main函数内的代码都可以访问该变量。另一个变量num1是在if程序块中声明的,因此只有在if块中出现的代码才可以使用num1,否则编译器会生成错误;但变量num可以在if块中使用,因为在if块外已经声明了此变量。
注意 只要作用域中的代码开始执行,变量就存在于内存中,变量超出其作用域的范围后系统就会释放它的值,也就是说,变量的生存期受到其作用域的限制。如果在作用域中初始化一个变量,则每次重新进入该作用域时系统就会重新初始化该变量。
2.2 数据类型
C++是一门强类型语言,也就是说,所有的变量都必须显式声明数据类型。类型是所有程序的基础,编译器通过数据类型得知数据的含义,以及可以对数据执行哪些操作。
C++中对类型的支持是非常广泛的,C++的数据类型分为两大类:
■ 基本内置类型;
■ 自定义类型。
2.2.1 基本内置类型
内置类型一次可以存储一个值,是C++中最简单的数据形式。C++中的基本内置类型从概念上分为如下5种。
■ 整数类型:short,int,long;
■ 浮点类型:float,double;
■ 字符类型:char,wchar_t;
■ 布尔类型:bool;
■ void 类型:没有对应的值,仅用在有限的一些情况下,通常用作无返回值函数的返回类型,或定义无确切类型的指针。
除了void类型外,C++标准规定了每个基本内置类型的最小存储空间,表2-1列出了基本内置类型及其对应的最小存储空间。
表2-1 基本内置类型及其对应的最小存储空间

由于字符类型的使用比其他类型复杂,因此在此做一些特别的说明,其他类型不再详细介绍。
在C++中,一个char代表一个有符号的字符,占1字节。一个char常量必须包含在单引号内,例如:
除了以上形式的字符常量值之外,C++还允许使用一种特殊形式的字符常量值来表示一些难以用一般字符表示的字符,这种特殊形式的字符是以一个“\\”开头的字符序列,称为转义字符。表2-2列出了C++中常用的转义字符及其含义。
表2-2 转义字符及其含义

转义字符的使用举例:
在C++中,一个wchar_t代表一个有符号的双字节字符,占2字节,一个wchar_t常量必须包含在单引号内,而且必须在单引号前加上“L”,例如:
注意 由于C++标准的推出晚于Visual C++6.0,因此该编译器不支持wchar_t关键字,如果想使用双字节字符,则需要包含tchar.h。
2.2.2 自定义类型
除了基本内置类型,C++还提供了可用于自定义数据类型的机制。通过自定义类型,程序员可以定义自己的数据类型以表达复杂的数据。另外,标准库也利用这些机制定义了许多更复杂的类型,比如可变长字符串string、vector等。表2-3列出了各种自定义数据类型。
表2-3 自定义数据类型

注意 结构体、枚举、联合这三个自定义类型的语法格式与C语言中的完全一样,本书不再讲解,相关内容请参考C语言相关教程。
2.2.3 数据类型转换
在C++中,一种数据类型可以转换成另外一种数据类型,这称为类型转换。有两种数据类型转换方式:
■ 自动类型转换;
■ 强制类型转换。
注意 数据类型转换要慎用,误用可能会导致数据的丢失。
1.自动类型转换
将
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询