作者:王石磊,韩海玲
出版社:人民邮电出版社
格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT
C++ 开发从入门到精通试读:
前言
从你开始学习编程的那一刻起,就注定了以后所要走的路:从编程学习者开始,依次经历实习生、程序员、软件工程师、架构师、CTO等职位的磨砺;当你站在职位顶峰的位置蓦然回首,会发现自己的成功并不是偶然,在程序员的成长之路上会有不断修改代码、寻找并解决Bug、不停测试程序和修改项目的经历;不可否认的是,只要你在自己的开发生涯中稳扎稳打,并且善于总结和学习,最终将会得到可喜的收获。选择一本合适的书
对于一名想从事程序开发的初学者来说,究竟如何学习才能提高自己的开发技术呢?其一的答案就是买一本合适的程序开发图书进行学习。但是,市面上许多面向初学者的编程类图书中,大多数篇幅都是基础知识讲解,多偏向于理论,读者读了以后面对实战项目时还是无从下手。讲清如何实现从理论平滑过渡到项目实战的图书,是初学者迫切需要的,为此,作者特意编写了本书。
本书讲解了入门类、范例类和项目实战类3类图书的内容。并且对实战知识不是点到为止地讲解,而是深入地探讨。用纸质书+光盘资料(视频和源程序)+网络答疑的方式,实现了入门+范例演练+项目实战的完美呈现,帮助读者从入门平滑过渡到适应项目实战的角色。本书的特色1.以“入门到精通”的写作方法构建内容,让读者入门容易
为了使读者能够完全看懂本书的内容,本书遵循“入门到精通”基础类图书的写法,循序渐进地讲解这门开发语言的基本知识。2.破解语言难点,“技术解惑”贯穿全书,绕过学习中的陷阱
本书不是编程语言知识点的罗列式讲解,为了帮助读者学懂基本知识点,每章都会有“技术解惑”板块,让读者知其然又知其所以然,也就是看得明白,学得通。3.全书共有440个实例,和“实例大全”类图书同数量级
书中一共有440个实例,其中正文实例145个,综合实例5个,每一个正文实例都穿插加入了2个与知识点相关的范例,即290个拓展范例。通过对这些实例及范例的练习,本书实现了对知识点的横向切入和纵向比较,让读者有更多的演练机会,并且可以从不同的角度展现一个知识点的用法,真正实现了举一反三。4.视频讲解,降低学习难度
书中每一章均提供声、图并茂的语音教学视频,这些视频能够引导初学者快速入门,增强学习的信心,从而快速理解所学知识。5.贴心提示和注意事项提醒
本书根据需要在各章安排了很多“注意”“说明”和“技巧”等小板块,让读者可以在学习过程中更轻松地理解相关知识点及概念,更快地掌握个别技术的应用技巧。6.源程序+视频+PPT丰富的学习资料,让学习更轻松
因为本书的内容非常多,不可能用一本书的篇幅囊括“基础+范例+项目案例”的诸多内容,所以,需要配套DVD来辅助实现。在本书的光盘中不但有全书的源代码,而且还精心制作了实例讲解视频。本书配套的PPT资料可以在网站下载(www.toppr.net)。7.QQ群+网站论坛实现教学互动,形成互帮互学的朋友圈
本书作者为了方便给读者答疑,特提供了网站论坛、QQ群等技术支持,并且随时在线与读者互动。让大家在互学互帮中形成一个良好的学习编程的氛围。
本书的学习论坛是:www.toppr.net。
本书的QQ群是:347459801。本书的内容
本书循序渐进、由浅入深地详细讲解了C++语言开发的技术,并通过具体实例的实现过程演练了各个知识点的具体应用。全书共26章,分别讲解了C++的基础语法,变量和常量,运算符,表达式,流程控制语句,学习C++的最大障碍——指针,复合类型,函数,输入和输出,类和封装,命名空间和作用域,类的继承和派生,多态性详解,模板,string类,异常处理,内存管理,预处理,错误和调试,初入江湖——图书借阅系统的实现过程,开始闯关(1)——C++实现网络应用项目,开始闯关(2)——C++实现游戏项目,功成名就——DirectX实现媒体播放器,笑傲江湖——C++网络视频监控系统等内容。书中以“技术讲解”→“范例演练”→“技术解惑”贯穿全书,引领读者全面掌握C++语言开发。各章的内容版式
本书的最大特色是实现了入门知识、实例演示、范例演练、技术解惑、综合实战5大部分内容的融合。其中各章内容由如下模块构成。
① 入门知识:循序渐进地讲解了C++语言开发的基本知识点。
② 实例演示:遵循理论加实践的学习模式,用145个实例演示了各个入门知识点的用法。
③ 范例演练:为了达到对知识点融会贯通,举一反三的效果,每个正文实例配套了2个演练范例,全书共计290个拓展范例,从多角度演示了各个知识的用法和技巧。
④ 技术解惑:把读者容易混淆的部分单独用一个板块进行讲解和剖析,对读者所学的知识实现了“拔高”处理。
下面以本书第5章为例,演示本书各章内容版式的具体结构。① 入门知识再看逻辑运算符知识点讲解:光盘:视频\PPT讲解(知识点)\第5章\再看逻辑运算符.mp4
C++语言提供了3个逻辑运算符,用于表示操作数之间的逻辑关系:!、&&和||。
逻辑非(!)是单目运算符,其功能是对操作数进行取反运算。当操作数为逻辑真时,“!”运算后结果为逻辑假(0);反之,若操作数为逻辑假,“!”运算后结果为逻辑真(1)。
逻辑与(&&)和逻辑或(||)是双目运算符。当两个操作数都是逻辑真(非0)时,“&&”运算后的结果为逻辑真(1),否则为0;当两个操作数都是逻辑假(0)时,“||”运算后的结果为逻辑假(0),否则为逻辑真(1)。实例结果如下。!(3>5) //结果为15>3 && 8>6 //结果为15>3 || 6>8 //结果为1② 实例演示 + ③ 范例演练实例015 演示逻辑运算符的使用方法
源码路径 光盘\daima\5\luoji 视频路径 光盘\视频\实例\第5章\015
本实例的实现文件为luoji.cpp,具体实现代码如下。void main(){ int iNum1; cout<<"请输入一个整数!"< 编译并运行程序,执行效果如图5-5所示。图5-5 执行后的效果④ 技术解惑 5.10 技术解惑 5.10.1 避免运算结果溢出的一个方案 5.10.2 运算符重载的权衡 5.10.3 运算符的优先级和结合性 5.10.4 运算符重载是对已有运算符赋予多重含义赠送资料售后服务本书的读者对象 初学编程的自学者 编程爱好者 大中专院校的教师和学生 相关培训机构的教师和学员 毕业设计的学生 初、中级程序开发人员 软件测试人员 参加实习的初级程序员 在职程序员 致谢 在本书编写过程中,十分感谢我的家人给予的巨大支持。本人水平毕竟有限,书中存在纰漏之处在所难免,诚请读者提出意见或建议,以便修订并使之更臻完善。编辑联系邮箱:zhangtao@ptpress.com.cn。 最后感谢您购买本书,希望本书能成为您编程路上的领航者,祝您阅读快乐!作者 本书实例目录 实例001:在屏幕中输出指定的字符串 范例001:输出“大家好才是真的好!”字符串 范例002:输出节日的祝福 实例002:获取3个输入值中的最大数值 范例003:输出带边框的问候语 范例004:输出不同类型的数据 实例003:演示整型数据的3种表示方法 范例005:演示浮点型数据的转换过程 范例006:使用科学计数法来表示3个数 实例004:分别定义5个变量,并分别初始化赋值处理 范例007:演示变量和存储方式的关系 范例008:获取输入的用户名和密码 实例005:使用extern声明两个变量a和b 范例009:判断是否是闰年 范例010:组合判断处理 实例006:演示说明同名变量的屏蔽问题 范例011:计算某年某月某日是第几天 范例012:猴子吃桃的问题 实例007:使用作用域限定符“: :” 范例013:解决加油站加油问题 范例014:解决买苹果的问题 实例008:说明变量内存空间的动态分配与释放方法 范例015:解决“老师分糖果”问题 范例016:新同学的年龄 实例009:分别初始化a、b、c、d、e共5个变量 范例017:解决百钱买百鸡的问题 范例018:解决三色球的问题 实例010:用常变量来保存圆周率PI的值 范例019:斐波那契额数列 范例020:哥德巴赫猜想 实例011:分别定义常量并输出到控制台 范例021:邮票数量的问题 范例022:序列求和问题 实例012:分别定义x和y,并分别对其赋值,最后将其值输出 范例023:字符加密 范例024:实现变量的互换操作 实例013:分别定义变量进行数学运算,并将计算结果输出 范例025:判断性别 范例026:用宏定义实现值互换 实例014:定义6个变量来演示3个比较运算符的使用方法 范例027:实现简单的位运算 范例028:演示整数的加减运算 实例015:演示逻辑运算符的使用方法 范例029:对实例015进行改造 范例030:打印输出多个三角形 实例016:演示自增、自减运算符的使用方法 范例031:打印输出图形 范例032:绘制余弦曲线 实例017:演示位运算符的使用方法 范例033:打印杨辉三角 范例034:角谷猜想 实例018:演示说明求字节数运算符的使用方法 范例035:获取float类型的字节数 范例036:获取double类型的字节数 实例019:演示运算符的优先级 范例037:演示运算符的结合性 范例038:演示运算符的综合应用 实例020:演示C++隐式转换的过程 范例039:实现数字金额的中文大写转换 范例040:将十进制数转换为二进制输出 实例021:演示reinterpret_cast函数的使用方法 范例041:产生随机数 范例042:实现排序操作 实例022:演示const_cast函数的使用方法 范例043:实现整数排序 范例044:实现数据交换操作 实例023:演示static_cast函数的使用方法 范例045:按照顺序输出字母 范例046:计算学生的成绩 实例024:演示最简单语句的执行过程 范例047:尼科彻斯定理 范例048:魔术师的秘密 实例025:演示语句块的执行过程 范例049:用指定符号分割字符串 范例050:删除文本中的汉字和句子 实例026:演示大括号语句块的创建过程 范例051:替换指定的字符串 范例052:为字符串添加子字符串 实例027:演示if-else语句的使用过程 范例053:李白喝酒问题 范例054:桃园三结义问题 实例028:演示if-else嵌套语句的使用过程 范例055:判断哪一年是闰年 范例056:小球称重问题 实例029:演示if-else嵌套语句的使用过程 范例057:猜一猜商品的价格 范例058:超市大促销 实例030:演示switch语句的使用过程 范例059:获取字符串中的数字 范例060:将指定字符串转换为大写形式 实例031:演示for循环语句的使用过程 范例061:PK高斯 范例062:灯塔的数量 实例032:演示while语句的使用过程 范例063:上帝创世的秘密 范例064:小球下落 实例033:演示do-while语句的使用过程 范例065:乘法口诀表 范例066:判断名次 实例034:演示break语句的使用过程 范例067:序列求和 范例068:简单的级数运算 实例035:演示continue语句的使用过程 范例069:计算正整数的所有因子 范例070:一元钱的兑换方案 实例036:演示goto语句的使用过程 范例071:获取字符串的汉字 范例072:输出输入月份的英文名 实例037:演示定义C++指针的具体过程 范例073:用指针自增输出数组元素 范例074:使用指针遍历数组 实例038:演示初始化C++指针的具体过程 范例075:用指针遍历结构数组 范例076:将指针作为函数的参数 实例039:演示定义C++指针的综合使用过程 范例077:多维数组的指针参数 范例078:将指针作为函数的返回值 实例040:演示定义C++指针算数运算的执行过程 范例079:用指针制作菜单管理器 范例080:用指针实现数据交换 实例041:演示定义C++指针关系运算的执行过程 范例081:用指针实现数据排序 范例082:指向结构体变量的指针 实例042:演示C++指针的赋值的具体过程 范例083:用指针实现逆序排序 范例084:用指针查找最大值和最小值 实例043:演示C++中*操作符的具体过程 范例085:用指针数组构造字符串数组 范例086:用指向函数的指针比较大小 实例044:测试引用与变量是否使用同一块内存单元 范例087:用指针的指针输出字符串 范例088:用指向函数的指针比较大小 实例045:说明用常量给引用赋值的过程 范例089:用指针的指针进行字符串排序 范例090:分解字符串中的单词 实例046:测试型变量和指针型变量在sizeof运算下的不同 范例091:复制选定的内容到粘贴板 范例092:在ListBox中查找字符串 实例047:演示说明使用void型指针的过程 范例093:获取编辑框中的回车数目 范例094:搜索字符串数组 实例048:演示空指针的使用过程 范例095:获取某个字符出现的位置 范例096:获取某个字符出现的次数 实例049:演示动态分配一维数组的具体过程 范例097:向数组赋值 范例098:遍历数组 实例050:演示动态分配二维数组的具体过程 范例099:计算数组元素的平均和 范例100:实现数组的排序操作 实例051:演示使用常量作为维数的具体过程 范例101:向数组中插入元素 范例102:实现数组的删除操作 实例052:演示宏定义define作为维数的具体过程 范例103:数组冒泡排序法 范例104:顺序查找数组的元素 实例053:演示宏定义define作为维数的具体过程 范例105:有序数组的折半查找 范例106:计算字符串有多少单词 实例054:演示宏定义define作为维数的具体过程 范例107:获取数组中元素的个数 范例108:输出数组中的元素 实例055:演示字符数组的具体使用过程 范例109:置换二维数组的行和列 范例110:将二维数组转换为一维数组 实例056:演示字符串指针的具体使用流程 范例111:用指针变量遍历二维数组 范例112:学生成绩排名 实例057:演示赋值语句初始化数组的具体流程 范例113:计算矩阵对角线的和 范例114:反向输出字符串 实例058:演示指向数组的指针的具体使用流程 范例115:用数组保存学生姓名 范例116:数组中连续相等的计数 实例059:演示指针数组的具体使用流程 范例117:交换两个数组元素 范例118:输出二维数组每行的最大值 实例060:演示索引方式使用数组的具体流程 范例119:二维数组行和列的最小值 范例120:二维数组行最大值中的最小值 实例061:演示数组名指针初始化数组的具体流程 范例121:删除数组中重复的连续元素 范例122:删除有序数组中的连续元素 实例062:演示指针变量初始化数组的具体流程 范例123:实现数组合并 范例124:用数组计数平均成绩 实例063:演示枚举的具体使用流程 范例125:定义使用枚举 范例126:创建一个12个月份的枚举 实例064:演示带有初始值枚举的具体使用流程 范例127:实现数组中的整数判断 范例128:判断二维数组中是否有相同元素 实例065:演示C++结构体的具体使用流程 范例129:初始化结构体变量 范例130:将结构体作为参数并返回 实例066:演示C++联合的具体使用流程 范例131:定义共用体类型 范例132:初始化共用体变量 实例067:演示使用typedef的具体流程 范例133:使用匿名共用体类型 范例134:使用new创建动态结构体 实例068:演示没有返回值的函数的具体使用流程 范例135:使用默认的函数参数 范例136:用函数操作不同的数据类型 实例069:演示有返回值、无形参函数的具体使用流程 范例137:使用函数返回最小值 范例138:用函数进行排序 实例070:演示既有返回值、也有形参函数的具体使用流程 范例139:演示函数放在主函数后的具体效果 范例140:演示C++内部函数的使用流程 实例071:演示C++外部函数的使用流程 范例141:统计成绩的最高分、最低分 范例142:在指定目录下查找文件 实例072:演示C++内联函数的使用流程 范例143:演示C++内联函数的定义和声明流程 范例144:演示C++外联函数的使用流程 实例073:演示用结构体存储函数参数具体方法 范例145:罗列系统中的盘符 范例146:遍历磁盘目录 实例074:演示C++形参和实参的具体使用方法 范例147:按照树结构输出区域信息 范例148:分解路径和名称 实例075:演示形参是数组时的具体执行结果 范例149:使用引用形参改变实参值 范例150:数值和字符串的类型转换 实例076:演示单独调用C++函数的具体过程 范例151:使用递归计算阶乘 范例152:随机获取姓名 实例077:演示函数表达式调用函数的具体过程 范例153:判断月份属于哪个季节 范例154:判断是否是闰年 实例078:演示实参调用函数的具体过程 范例155:将两个实型数据转换为字符串并连接 范例156:分解字符串中的单词 实例079:演示C++参数传递的具体过程 范例157:实现字符串加密 范例158:实现字符串连接 实例080:演示用递归方法实现数学算法的具体过程 范例159:演示C++函数递归的具体过程 范例160:给选中的字符加双引号 实例081:演示指向函数的指针的具体使用过程 范例161:指针作为函数的参数 范例162:指针作为函数的返回值 实例082:演示函数作为函数参数的具体实现过程 范例163:实现字符串翻转 范例164:删除首尾的多余空格 实例083:演示带参数的main()函数具体使用过程 范例165:对命令行参数进行读取操作 范例166:向编辑框中添加字符 实例084:演示标准I/O的具体使用流程 范例167:创建文本文件并进行读写数据操作 范例168:在文件的指定位置存放和读取数据 实例085:演示使用文件I/O的具体流程 范例169:复制、删除、移动文件 范例170:遍历目录下的每个文件 实例086:演示使用字符串I/O的具体流程 范例171:复制、删除、移动文件 范例172:获取指定文件的图标 实例087:演示预定义类型输出的操作流程 范例173:使用流输出运算符 范例174:获取系统所有的驱动器和序列号 实例088:演示自定义类型输出的具体操作流程 范例175:获取驱动器的文件系统类型 范例176:获取磁盘的空间信息 实例089:演示自定义类型输入的具体流程 范例177:判别磁盘驱动器的类型 范例178:获取当前目录和系统目录 实例090:演示ios类成员函数的具体操作流程 范例179:创建和删除目录 范例180:删除非空目录 实例091:演示几种操纵算子的具体使用流程 范例181:复制一个指定目录 范例182:删除指定目录下某类型文件 实例092:演示文本文件的读写方式 范例183:读取指定文件的内容 范例184:通过get()函数和put()函数分别实现读取和写入操作 实例093:演示文件随机读写的具体流程 范例185:获取目录的创建时间 范例186:获取应用程序的完整路径 实例094:演示对二进制文件读的操作流程 范例187:创建临时文件 范例188:使用INI文件保存程序的信息 实例095:演示eof()函数的使用方法 范例189:使用eof()函数读取指定文件的内容 范例190:使用内存映射文件来共享数据 实例096:演示构造函数的使用过程 范例191:自定义一个图书类 范例192:单位转换工具 实例097:拷贝构造功能的构造函数,演示自定义形式的使用方法 范例193:定义一个同名方法 范例194:使用构造方法 实例098:演示使用析构函数的具体过程 范例195:祖先的药方 范例196:统计销售数量 实例099:演示使用静态函数的具体过程 范例197:使用单例模式 范例198:员工之间的差异 实例100:演示使用友元的具体过程 范例199:重写父类中的方法 范例200:计算图形的面积 实例101:演示使用const和mutable修饰符的过程 范例201:销售商场 范例202:使用拷贝构造函数 实例102:演示C++类文件的组织结构 范例203:访问类的私有成员函数 范例204:实现类的加法运算 实例103:演示使用对象数组student的具体方法 范例205:在类中实现事件 范例206:使用命名空间 实例104:演示在C++中使用this指针的方法 范例207:实现模版 范例208:使用const函数 实例105:演示C++命名空间的定义方法 范例209:用纯虚函数代替接口 范例210:定义嵌套类 实例106:演示使用命名空间的方法 范例211:使用策略模式 范例212:使用适配器模式 实例107:演示C++作用域在程序中的作用 范例213:比较集合 范例214:计算相同元素的个数 实例108:演示使用C++派生的基本过程 范例215:演示私有继承的访问规则 范例216:演示保护继承的访问规则 实例109:演示使用C++构造函数的基本过程 范例217:演示公有继承的访问规则 范例218:演示简单派生类的构造和析构 实例110:演示使用C++析构函数的基本过程 范例219:当派生类中存在成员对象 范例220:演示派生类的综合应用 实例111:演示使用C++同名函数的基本过程 范例221:在类中声明静态数据成员 范例222:用static声明成员函数为静态成员函数 实例112:演示使用C++同名属性的基本过程 范例223:演示友元非成员函数 范例224:演示友元成员函数 实例113:演示使用多重继承中构造函数和析构函数的基本过程 范例225:一个类被说明为另一个类的友元类 范例226:演示类具有内嵌的对象 实例114:演示C++中多重继承中存在的二义性问题 范例227:使用关键字const 范例228:转换构造函数 实例115:在C++程序中使用宏多态 范例229:演示基类和派生类的用法 范例230:演示虚函数的作用 实例116:在C++程序中使用虚函数 范例231:用关键字virtual解决问题 范例232:演示只执行基类析构函数的情形 实例117:在C++程序中使用纯虚函数 范例233:演示多态和函数的联合应用 范例234:演示结构体的缺陷 实例118:演示C++抽象类的派生过程 范例235:演示各种成员函数的应用 范例236:演示运算符的重载 实例119:演示C++中重载一元运算符的具体过程 范例237:使用友元函数重载双目运算符(+) 范例238:使用友元函数重载单目运算符 (++) 实例120:演示C++中重载二元运算符的具体过程 范例239:使用成员函数重载双目运算符(+) 范例240:演示运算符的综合应用 实例121:演示不同参数类型的重载函数的使用过程 范例241:根据运算符重载函数参数来判断 范例242:可以用基本数据的输出和输入 实例122:演示在C++程序中流插入重载的过程 范例243:运算符操作复数类 范例244:使用模板技术 实例123:演示在C++程序中流插入重载的过程 范例245:指定多个函数模板中类型参数 范例246:函数模板与同名非模板函数重载 实例124:演示在C++程序中使用覆盖函数的过程 范例247:演示覆盖和重载 范例248:动态联编机制 实例125:演示在C++程序中覆盖变量的过程 范例249:继承成员变量的覆盖/重写 范例250:联合演示覆盖、重载和隐藏 实例126:演示在C++程序中使用模板的过程 范例251:使用vector模板类 范例252:使用链表类模板 实例127:演示在C++程序中使用类模板的过程 范例253:用指定的字符在集合中查找元素 范例254:搜索相邻的重复元素 实例128:演示在C++程序中使用函数模板的过程 范例255:用count算法计算相邻元素的个数 范例256:将元素的顺序随机打乱 实例129:演示在C++程序中使用string方法的过程 范例257:使用迭代器 范例258:用向量改进内存的再分配 实例130:演示在C++程序中使用类运算的过程 范例259:实现查找、替换字符串 范例260:根据指定字符分割字符串 实例131:演示在C++程序中使用string类的过程 范例261:格式化字符串 范例262:使用CPtrList类创建和使用链表 实例132:在C++程序中使用throw抛出异常 范例263:用三角形的三边计算面积 范例264:在异常处理中处理析构函数 实例133:在C++程序中使用raise抛出异常 范例265:在嵌套函数中处理异常 范例266:演示C++捕获异常 实例134:在C++程序中使用try-catch捕获异常 范例267:程序终止不执行 范例268:演示atexit挂接的函数 实例135:演示异常处理中的构造和析构的实现过程 范例269:在异常程序中不调用exit函数 范例270:演示atexit可以被多次履行 实例136:演示C++异常处理在数学运算中的应用 范例271:不同模式下的_assert()函数 范例272:联合使用catch和throw语句 实例137:演示定义C++栈内存的具体过程 范例273:使用全局结构进行线程间的通信 范例274:使用自定义消息进行线程间的通信 实例138:演示改变C++内存大小的具体过程 范例275:使用事件对象进行线程间的通信 范例276:设置线程的优先级 实例139:演示改变C++内存大小的具体过程 范例277:使用临界区对象实现线程同步 范例278:使用互斥对象实现线程同步 实例140:演示使用堆内存的具体过程 范例279:使用互斥对象实现不同进程间线程同步 范例280:使用信号量实现线程的同步 实例141:演示二次内存分配的具体过程 范例281:获取当前系统的所有进程 范例282:设置在系统中只能运行一个实例 实例142:演示条件编译的具体过程 范例283:判断输入的单词是否小于定义的最小长度,如小于则输出错误信息 范例284:演示编译预处理命令的用法 实例143:演示布局控制的具体过程 范例285:使用#ifdef条件编译命令 范例286:使用#if条件编译命令 实例144:演示C++程序的语法错误 范例287:使用简单断点调试 范例288:使用条件断点调试 实例145:演示C++的链接错误 范例289:使用数据断点调试 范例290:使用消息断点调试 综合实例001:图书借阅系统 综合实例002:网络聊天系统 综合实例003:大型游戏项目 综合实例004:多媒体播放器系统 综合实例005:网络视频监控系统第1章说真的,我们还要学习C++吗 想必大家都听说过“C++语言”吧,过去我们一般使用C语言,因为用C语言编制的程序不仅执行速度快,还可以充分地使用硬件的各种资源。而C++语言是对C语言的重大改进,C++的最大特点是通过“类”而成为了一门“面向对象”的语言。本章将介绍学习C++语言所必需的基础知识和遇到的常见问题的解决方法,为读者进行本书后面知识的学习打下基础。本章内容● C++概述● 开发工具——Visual C++● 使用Visual Studio 2010● 第一个C++程序技术解惑● 初学者经常不知道自己该学什么● 是否值得为C++投入时间● 初学者需要知道的正确观念1.1 C++概述知识点讲解:光盘:视频\PPT讲解(知识点)\第1章\C++概述.mp4 C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。1.C++发展历史简单介绍 当C语言发展到顶峰时,出现了一个版本叫C with Classes,这就是C++最早的版本。其特点是在C语言中增加了class关键字和类,那时有很多版本的C都希望在C语言中增加类的概念。后来C标准委员会决定为这个版本的C起个新的名字,在当时征集了很多个名字,最后采纳了其中一个人的意见,以C语言中的运算符“++”来体现它是C语言的进步,所以就叫C++,并成立了C++标准委员会。 1998年,国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1488—1998。C++是具有国际标准的编程语言,通常称作ANSI/ISO C++。2.现在的C++语言 就目前我们学习的C++而言,可以认为是一门独立的语言。它并不依赖C语言,我们可以完全不学C语言,而直接学习C++。根据《C++编程思想》(Thinking in C++)一书所评述的,C++与C的效率往往相差在正负5%之间,所以有人认为,在大多数场合C++完全可以取代C语言。1.2 开发工具——Visual C++知识点讲解:光盘:视频\PPT讲解(知识点)\第1章\Visual C++ 6.0.mp4 自从C++诞生以来,前辈们一直在探索、研究它的最佳开发工具。经过多年的不懈努力,Visual C++ 6.0登上历史舞台(也简称VC++),它和C++双剑合璧,成为受开发人员欢迎的组合。在本节的内容中,将详细讲解搭建Visual C++ 6.0开发环境的基本知识。1.2.1 先看Visual C++的基本特点 Visual C++ 6.0是一个功能强大的可视化软件开发工具,现在已成为专业程序员进行C++开发的首选工具,也是最常用的一个版本。Visual C++ 6.0的基本特点如下。 ① Visual C++的源程序要求用C++语言编写,它支持面向对象的程序设计方法。 ② 使用了Microsoft的基础类库MFC,使得开发Windows应用程序比以往任何时候都要容易。利用Visual C++可以编制各种类型的Windows应用程序,从最简单的单文档、对话框程序到复杂的多文档和组合界面程序。而且可以与Visual Studio可视化组件家族中的其他可视化开发工具(如Visual Basic、C#)紧密地集成在一起,可进行不同类型的程序开发工作。 ③ Visual C++ 6.0源代码编辑器提供了自动语句完成功能,编辑输入源程序时,它能自动显示当前对象的成员变量和成员函数,并指明函数的参数类型。 ④ Visual C++ 6.0程序调试器功能更强大,它提供了诊断映射机制,以及无需重新编译的调试、远程调试和实时调试等功能。 ⑤ Visual C++ 6.0联机帮助MSDN采用当前最流行的HTML格式,它既能与集成开发环境有机结合在一起,使得用户在编程时随机查询需要的内容,又能脱离集成开发环境而独立运行。用户还可以通过网络获取实时的帮助信息和实例。 ⑥ Visual C++ 6.0通过Visual Studio为用户提供了一些实用的工具,如Spy++查看器、Register Control(控件注册程序),扩展了Visual C++的功能。 但是,Visual C++ 6.0也存在缺点,由于C++本身编程的困难和MFC类库功能的复杂、庞大,加上应用程序向导生成的程序框架结构的复杂性,使得相对于其他开发工具,学习Visual C++ 6.0开发会更困难些。用Visual C++编写Windows应用程序具有挑战性,但是当熟练掌握Visual C++编程后就会感到作为Visual C++程序员的无比优越性。1.2.2 安装Visual C++ 要想安装并运行Visual C++ 6.0,所需的最低软、硬件配置要求如下。● Windows 95或Windows NT以上操作系统。● 最小安装需要140MB的可用硬盘空间,典型安装需要200MB的可 用硬盘空,CD-ROM安装需要50MB的可用硬盘空间,完整安装 需要300MB的可用硬盘空间。 目前主流计算机配置已经远远超过Visual C++ 6.0的安装最小要求,因此,用户基本上不需要考虑计算机的硬件配置问题。 安装Visual C++ 6.0的具体流程如下。 ① 将安装光盘放入光驱中,此时,安装光盘自动运行,弹出图1-1所示的安装画面。图1-1 开始安装对话框 ② 在弹出的对话框中显示了所购买的产品的版本信息。单击“Next”按钮到下一步安装中。此时弹出用户许可协议对话框,如图1-2所示,选择“I accept the agreement”项,表示接受用户许可协议,然后才可以单击“Next”按钮进入下一步。图1-2 同意安装协议 ③ 进入图1-3所示的对话框中,填入产品序列号和用户信息,单击“Next”按钮进入下一步。图1-3 填写产品序列号和用户信息 ④ 进入图1-4所示的对话框中,选择“Custom”项,单击“Next”按钮进入下一步。图1-4 选择安装选项 ⑤ 进入图1-5所示的对话框中,设置Visual C++的安装路径,单击“Next”按钮进入下一步。图1-5 选择安装文件路径 ⑥ 进入图1-6所示的安装界面,单击“Continue”按钮继续。图1-6 安装确认界面 ⑦ 弹出图1-7所示的对话框,此界面把所有的安装项目都列了出来。选择需要的安装项目,然后单击“Continue”按钮进入下一步。图1-7 安装项目选项 ⑧ 安装程序计算所需要的硬盘空间是否足够,如果满足要求,则安装程序开始复制文件到用户的计算机中,图1-8所示为安装进度条。图1-8 文件安装进度条 ⑨ 当所有的文件都复制完毕后,需要按照程序的默认选项“Restart Windows”,重新启动计算机完成安装,如图1-9所示。图1-9 重新启动计算机 ⑩ Visual C++安装完成后,可以继续安装MSDN帮助文件,具体步骤不再详述,只是需要提醒用户在图1-10所示的选项中,注意选择MSDN的运行方式,一般情况是选择“Full”选项,将文件全部复制到硬盘中。图1-10 MSDN选项对话框 通过以上的操作步骤,我们成功完成了Visual C++6.0开发工具以及MSDN的安装,MSDN是VC++程序员不可缺少的联机帮助文件,用户最好随系统一起安装。请读者课后练习安装,并注意查看安装完成后,集成开发环境都包括哪些开发工具。 此外,在实际系统开发中,我们还经常需要一些辅助工具来提高工作效率和便于开发小组内部人员的交流,例如,Rational Rose软件(常用版本Rational Rose 2003),该软件是一个高效的系统设计软件,利用该软件可以有效地对系统开发的架构进行设计,合理安排开发进度,特别是对大型系统软件的开发具有重要意义。而且,通过该软件还能够实现逆向工程,提取现有软件的功能结构图和类图等,对我们分析软件具有重要意义。1.2.3 Visual C++集成开发环境介绍1.集成开发环境的主窗口Developer Studio Visual C++6.0通过Developer Studio窗口将所有的组件集成到开发环境中,这样用户就可以利用Developer Studio编写各种Windows应用程序。在默认情况下,无法使用和集成开发环境有关的工具,只有在创建一个新工程或打开一个现有工程之后,才能查看集成开发环境。具体的使用流程如下。 ① 启动Visual C++ 6.0,打开“File”菜单,执行“New”菜单命令,出现“New”对话框,如图1-11所示。然后在“Projects”页面窗口选择“MFC AppWizard[exe]”选项,在“Project name”编辑框中输入项目名称“MySDIDemo”,在“Location”编辑框中输入保存项目的路径,单击“OK”按钮,进入MFC AppWizard-Sep1操作向导的第一步。图1-11 创建一个应用程序 ② 在“MFC AppWizard-Sep1”对话框中设置应用程序类型为“Single document”项,单击“Finish”按钮,出现“New Project Information”对话框,单击“OK”按钮,将生成应用程序框架文件,并在项目工作区窗口打开生成的应用程序项目。图1-12所示为集成开发环境的主窗口Developer Studio。图1-12 集成开发环境的主窗口Developer Studio 集成开发环境的主窗口Developer Studio可以分为如下5个部分。● 窗口最顶端为标题栏,显示当前项目的名称和当前编辑文档的名 称,如“MySDIDemo - Microsoft Visual C++ - [MySDIDemoView.cpp]”。在名称后面有时会显示一个星号(*), 表示当前文档在修改后还没有保存。● 标题栏下面是菜单栏和工具栏,菜单栏中的菜单项包括了Visual C++的全部操作命令,工具栏以位图按钮的形式显示常用操作命 令。● 工具栏下面的左边是工作区(Workspace)窗口,其中包括:类 视图(ClassView)、资源视图(ResourceView)和文件视图(FileView)3个页面,分别列出了当前应用程序中所有的类、资 源和源文件。● 工具栏下面的右边是编辑窗口,用来显示当前编辑的C++程序源 文件或资源文件。编辑窗口是含有最大化、最小化、关闭按钮和 系统菜单的普通框架窗口。当打开一个源文件或资源文件时,就 会自动打开对应的编辑窗口。在Developer Studio中可以同时打 开多个编辑窗口。编辑窗口可以以平铺或层叠方式显示。● 编辑窗口和工作区窗口的下面是输出窗口,当编译、链接程序时, 输出窗口会显示编译和链接信息。2.浮动窗口与停靠窗口 集成开发环境提供了两种类型的窗口:浮动窗口和停靠窗口,具体说明如下。 ① 浮动窗口。是带边框的子窗口,它可以显示源代码和图形,以平铺或层叠的方式显示在集成开发环境中,如图1-12所示的编辑窗口。 ② 停靠窗口。可以固定在集成开发环境中的顶端、底端和侧面,也可以浮动在屏幕的任何位置。停靠窗口无论是浮动着还是固定着,总是出现在浮动窗口的前面。 集成开发环境中有两个主要的停靠窗口:Workspace工作区窗口和Output输出窗口。停靠窗口的固定和浮动形式可以相互转换,当拖动一个固定窗口边缘未使用部分至屏幕中间位置,该固定窗口就转换为浮动窗口。反之,当拖动一个浮动窗口的标题栏至开发环境主窗口的任何边缘上,该浮动窗口就会转换成固定窗口。单击窗口上的关闭按钮可以关闭窗口,要想重新打开窗口,可以在View主菜单中选择相应的菜单项。3.集成开发环境菜单项 在集成开发环境中的菜单栏中共提供了“File”“Edit”“View”“Insert”“Project”“Build”“Tools”“Window”和“Help”9个菜单,如图1-13所示。在本节内容中,我们将对这些菜单进行详细介绍。图1-13 集成开发环境的菜单栏(1)“File”菜单 在“File”菜单中包含了用于对文件进行操作的命令选项,如图1-14所示。图1-14 “File”菜单(2)“New”菜单项 该菜单项用于打开“New”对话框,利用“New”对话框可以创建新的文件、项目或者工作区。如果要创建新的文件,请从“New”对话框的“Files”选项卡中单击要创建的文件类型,如图1-15所示,然后在“File”文本框中键入文件的名字,如果要添加新文件到已有的项目中,请选中“Add to project”复选框并选择项目名。图1-15 “File”菜单“New”菜单项 使用Visual C++ 6.0可以创建如下文件类型。● Active Server Page:创建服务器页。● Binary File:创建二进制文件。● Bitmap File:创建位图文件。● C++ Header File:创建C++头文件。● C/C++ Source File:创建C++源文件。● Cursor File:创建光标文件。● HTML File:创建HTML页。● Icon File:创建宏文件。● Resource Script:创建资源脚本文件。● Resource Template:创建资源模板文件。● SQL Script File:创建SQL脚本文件。● Text File:创建文本文件。 ① 创建新的项目。从“New”对话框的“Projects”选项卡中单击要创建的项目类型,然后在“Project name”编辑框键入项目的名字,在“Location”编辑框中输入项目文件地址,同时还可以通过“Create new workspcae”和“Add to current workspace”选项,确定是创建一个新的工作区,还是添加到现有的工作区中,如图1-16所示。图1-16 “File”菜单“Projects”选项卡 使用Visual C++ 6.0可以创建如下项目类型。● ATL COM AppWizard:用于创建ATL应用程序。● Cluster Resource Type Wizard:用于创建Resource DLL应用程 序。● Custom AppWizard:用于创建自定义的AppWizard。● Database Project:用于直接创建数据库项目。● DevStudio Add-in Wizard:用于创建自动化宏。● Extended Stored Proc Wizard:用于创建SQL Server应用程序。● ISAPI Extension Wizard:用于创建Internet服务器或过滤器。● Makefile:用于创建Make文件。● MFC ActiveX ControlWizard:用于创建ActiveX控件程序。● MFC AppWizard(dll):用于创建MFC动态链接库。● MFC AppWizard(exe):用于创建MFC可执行程序。● New Database Wizard:用于创建SQL服务器数据库。● Utility Project:用于创建容器类项目。● Win32 Application:创建Win32应用程序。● Win32 Console Application:用于创建Win32控制台应用程序。● Win32 Dynamic-Link Library:用于创建Win32动态链接库。● Win32 Static Library:用于创建Win32静态库。 ② 创建新的工作区。从“New”对话框的“Workspaces”选项卡选择一种工作区类型,然后在“Workspace name”文本框中键入工作区的名字。默认只有“Blank Workspace”选项,用于创建一空白工作区,如图1-17所示。图1-17 “File”菜单“Workspaces”选项卡(3)“Edit”菜单“Edit”菜单包含用于编辑或者搜索的命令选项,如图1-18所示。图1-18 “Edit”菜单●“ Undo”菜单项:用于取消最近一次的编辑修改操作。●“ Redo”菜单项:用于最近一次的“Undo”操作,可以恢复被“Undo”命令取消的修改操作。●“ Cut”菜单项:将当前活动窗口中选定的内容复制到剪贴板中, 然后再将其从当前活动窗口中删除。●“ Copy”菜单项:将当前活动窗口中被选定的内容复制到剪贴板 中,但并不将其从当前活动窗口中删除。●“ Paste”菜单项:用于将剪贴板中的内容插入到当前光标所在的 位置中,必须先剪切或者复制选定到剪贴板后,才能进行粘贴。 Cut、Copy、Paste与Windows中的操作是一样的。●“ Delete”菜单项:用于删除被选定的内容。删除以后还可以使 用“Undo”命令来恢复删除操作。●“ Select All”菜单:用于选择当前活动窗口中的所有内容。●“ Find”选项菜单:用于查找指定的字符串,选择“Find”选项 将弹出“Find”对话框,如图1-19所示。图1-19 “Edit”菜单“Find”菜单项弹出对话框(4)“View”菜单“View”菜单包含用于检查源代码和调试信息的命令选项,如图1-20所示。图1-20 “View”菜单●“ ClassWinzard”菜单项:选择该项将启动MFC ClassWizard对话 框,如图1-21所示。图1-21 “MFC ClassWizard”对话框 ClassWizard是一个运用于MFC应用程序的专用工具,使用它可以实现如下功能。● 创建新类,新类是从处理Windows 消息和记录集(Recordset) 的主框架基类派生的。● 映射消息与窗口、对话框、控件、菜单选项和快捷键有关的处理 函数。● 创建新的消息处理函数。● 删除消息处理函数。● 查看已经拥有处理函数的消息并跳转到相应的处理代码中去。● 定义成员变量用于自动初始化收集并验证输入到对话框或表单视 图(Form View)中的数据。● 创建新类时添加自动化方法和属性。●“ Resource Symbols”菜单项:选择该项将打开资源符号浏览器, 如图1-22所示,从中可以浏览和编辑资源符号。资源符号是映射 到整数值上的一串字符,可以在源代码或资源编辑器中通过资源 符号引用资源。图1-22 “View”菜单“Resource Symbols”对话框●“ Resource Includes”菜单项:选择该项将自动弹出“Resource Includes”对话框,如图1-23所示,从中可以修改资源符号文件 名和预处理器指令。图1-23 “View”菜单“Resource Includes”对话框●“ Full Screen”菜单项:选择该项将按全屏幕方式显示活动窗 口。切换到全屏幕方式后,可以单击“Toole Ful Sceen”按钮或 按Esc键切换回原来的显示方式。●“ Workspace”菜单项:如果工作区窗口未显示,选择该选项将 显示工作区窗口。●“ Output”菜单项:在输出窗口显示程序建立过程的有关信息或 错误信息,并显示调试运行时的输出结果。●“ Debug Windows”菜单项:选择该选项将弹出级联菜单,用于 显示调试信息窗口。这些命令选项只有在调试运行状态时才可用, 如图1-24所示。
试读结束[说明:试读内容隐藏了图片]