资 源 简 介
编辑推荐 对一个即将出门旅行的人来说,最需要的是一张内容详尽、生动、实用的旅行地图。 对即将进入神秘、美丽的C++世界的你,最需要的是一本C++世界地图册。 本书将带领你畅游整个C++世界。还等什么,让我们出发吧!内容简介 每一个渴望学习C++语言的初学者都希望能够有一本全面的,实用的,同时又是生动有趣的入门书。这本入门书可以告诉这些初学者,整个C++世界有哪些内容构成,应该按照怎样的路径进行学习探索,用C++进行程序设计应该具有怎样的设计思想,同时,又如何在实践中运用这些学到的知识。可以说,这本书基本上囊括了每个C++初学者都应该了解的所有知识,从C++的基础知识到面向对象序言在多年的教学实践中,我深深感到C++语言的灵活和高效,以及C+语言中的面向对象特性能够带给软件开发者无尽想象的空间,同时也深深感到教授C++语言过程中面临的困难和挑战。尽管目前有关C+语言的书籍很多,但学习C++语言仍然让大多数初学者心存畏惧。本书作者结合自己学习和使用C++语言的经验和感悟,尝试用轻松幽默的语言,借助人们熟知的生活概念,形象生动地讲述C++语言。本书对那些渴望掌握C++语言而又心存畏惧的初学者,无疑是…一个很好的选择作者与我的团队一同快速成长,相信在这个成长的过程中作者也如我一样,经历了从在懵懂中模仿使用C++语言到喜爱C++语言的指针的灵活及面向对象的设计思想。尽管近年来新的计算机语言不断出现,但C++语言因同时具有最贴近计算机数值操作方式的指针操作和最贴近人类社会行为模式的面向对象的特性,而具有其他程序语言无法比拟的强大生命力。可以说,指针和面向对象的特性是C++语言的灵魂,同时也是学习和使用C++的难点。期望那些有所感悟的同行,参与到探寻有效学习C++语言的方法中来。本书全面阐述了C++语言的基本概念和技术,并且结合了实例进行讲解,另外,还给出了一些公司的典型笔试题,更加突显出其实用性。本书的语言轻松、幽默,经过作者的深入思考和策划使得学习C++不再枯燥。本书的美中不足之处在于讲解还可以进一步深入、个别观点和类比可以进一步完善。如果读者能够结合书后附录中给出的参考书,会收到更好的学习效果。康雁2011年3月26日于沈阳目录第1篇叩开C++世界的大门……………………1第1章C++世界地图31.1C+是什么4著日画画篇面宙和宙是南和新薛正要自中自非作日1目目罪目非非车非11自靠市市非s垂鲁目哲鲁鲁由市费12C++的前世今生mta面由晋干吾吾吾干吾吾中中和导番吾普吾世卡吾吾垂当和h量吾量册吾子。由审审自日日自,.山山·寻导.于干中平吾.即日·市甲甲·日a日日33412.1从B到C曹+曾?鲁鲁查曹世曾情当售普·界中和中中中中中甲1.2.2从C到C++……甲,自,鲁鲁自。自由12.3从C++到 NET Framework的CL1…………………………………………6124最新标准C++0x让C++重新焕发活力……………………………8125C++和C#不得不说的那点事儿126C++世界的五大子语言13C++世界版图……………………101.3.1 Windows系统下的C++开发101.3.2 Linux系统下的C+开发……………133嵌入式系统下的C++开发14如何学好C++…………12141将自然语言转换为C++程序设计语言…………………1214.2“多读多写”是学好C++的不二法门……………………14143和 Google做朋友………14第2章与C++第一次亲密接触…里看■■·群E面看■看L翻■国自■■】面自国■「■■音面【翻1721一个C++程序的自白…17211用 Visual Studio创建C++程序………………17212以手工方式创建C++程序…………2021.3C++程序=预编译指令+程序代码+注释………………………21214编译器和链接器25215C++程序的执行过程………………………………………2621.6程序的两大任务:描述数据与处理数据…………2722基本输入瀚出流……………………………………2822.1标准的输入和输出对象……29222输出格式控制…3223读/写文件……3223最常用的开发环境Ⅴ Visual studio…34231 Visual c++的常用菜单,,,…………35232 Visual C++的常用视图………4424C++世界旅行必备的物品……,…,4,…,,1462.41编程助手 Visual assist462.42代码配置管理工具Ⅵ isual Source Safe………………………………4824.3 Codeproject和 Code guru…丰·148244C++百科全书MSDN………48平导首加b吾+中登善鲁吾晋吾中于普是申!即·甲甲市。·市由由目非自申.第2篇欢迎来到C++世界…·+“…51第3章C++世界众生相…∴∴………∴………………………,533.1C++中的数据类型……………………5332变量和常量….54321声明变量…………………………55322给变量取个好名字…………………………55323变量初始化………57324常量由a画da自 winnt量ff++由aa……………………57325用宏与 const关键字定义常量是普吾平十出和号整日是干寻.平中中中,日目自吾当导导日中要号·33数值类型……………………………………………………………62331整型数值类型…332浮点型数值类型………,,,…,,…6334布尔类型卡士晋音吾平4中晋晋晋和中量普晋吾吾哥是是6435字符串类型………………….65351字符类型65352字符串类型……………………………6636数组………6736.1数组的声明与初始化…68362数组的使用中3.7枚举类型………71目录38用结构体类型描述复杂的事物…如鲁.和和是和非请·本申p自重中审目音分日量d士由量最吾吾易吾中甲甲中!兽73381结构体的定义…。申申非…73382结构体的使用……………看着国7439指向内存位置的指针……面□面 tairi_血ft量t面最吾量番最番“x,,,,76391指针就是表示内存地址的数据类型……76392指针变量的定义……………………………77393指针的赋值和使用……………………………………………78第4章将语句编织成程序……………8141用运算符对数据进行运算814.1.1用表达式表达设计意图…………………………8241.2算术运算符…8241.3赋值操作符…………………………………………………84414关系运算符A4.1,5逻辑运算符……………………………………………………8641.6运算符之间的优先顺序…874.1.7将表达式组织成语句………………………………………894.2条件选择语句……42.1语句……………………………………………………………94,22并列选择的 switch语句…………………………………934.3循环控制语句………………9743.1 while循环974.3.2do. while循环……9941.3.3for循环,1004.3.4循环控制: break和 continue…………………………………10244从语句到程序……………………………………………………10444.1程序是控制语句串联起来的语句……………10444.2豪华工资统计程序番普世量,围和和要吾吾申甲寻市市当甲甲更·申塑要.鲁善着带甲甲日善道语申106第5章用函数封装程序功能10951函数就是一个大“箱子”……10951.1函数的声明和定义…画压量由出由tm普音世曲业+出量音世m晋干曾面画面m于面西音日吾晋量音团由量量出量110512函数调用机制……………………………………………………113513函数的声明与函数调用着自自面,量看电中中即日鲁非着细由自自目着看着「甲着自即鲁鲁看117514函数参数的传递……19目录|51.5函数的返回值……………………12l52内联函数123521用体积换速度的内联函数…………………12352.2内联函数的使用规则.,412453重载函数…,,…,125531重载函数的声明…125532重载函数的解析…12854函数设计的基本规则………………………………………l29541函数声明的设计规则………………129542函数体的设计规则212131第6章当C++爱上面向对象…画“画量面由面面正普,!1356]从结构化设计到面向对象程序设计…………135611“自顶向下,逐步求精”的结构化程序设计13661.2面向对象程序设计■nt由量t世中!·丰中:t……,…,1376.13面向对象的三座基石:封装、继承与多态……画ta由妇自面音tit1386,2类:当C++爱上面向对象142621类的声明和定义…………142622使用类创建对象……………………………………………146623构造函数和析构函数………148624拷贝构造函数……152625操作符重载……..…155626类成员的访问控制,,,…,,15762.7在友元中访问类的隐藏信息……16063类如何面向对象…………………………………………………………162631用类机制实现封装…,……163632用基类和派生类实现继承16633用虚函数实现多态………………………………………17164实战面向对象:工资管理系统…1756.41从问题描述中发现对象…,…175642分析对象的属性和行为…………………………176643实现类的属性和行为……17765高手是这样炼成的……,183651C++类对象的内存模型…,…,,,…,………1834|目录65.2指向自身的ths指针…………185第7章C++世界的奇人异事…………………………………………………18971一切指针都是纸老虎:彻底理解指针………1897.11指针的运算ritmnndnonn a………1897.1.2灵活的void类型和void类型指针……41927.13指向指针的指针………………………………………1947.14指针在函数中的应用…19571.5引用……………………………………………1987.2程序中的异常处理…………………………………………………203721异常处理当昏出由出折非晋由中面由中当主t和非由审审非非中导阳非日曹…2037.22异常的函数接口声明……….206723合理使用异常处理………………………20773编写更复杂的C++程序…“……,2087.31源文件和头文件………………208732名字空间………..…….210733作用域与可见性…214734编译预处理…………………………….…….…….….21874高手是这样炼成的…………………22074.I用宏定义化鱉为简…2074.2用 typedef定义类型的别名……………22174.3用 const保护数据……223第3篇攀登C++世界的高峰…………………………227第8章用STL优雅你的程序……22981跟STL做朋友…………………....…230811算法+容器+迭代器=STL………………………,23081.2在程序中使用STL………………2318.13STL到底好在哪里丰中吾开中h晋音面音吾吾西面由日首主由日日由国日本面自审(2338.2用模板实现通用算法者由平于:日中中甲平吾于中平图·吾干于面面面面面吾是出+量面面由山面由面面34821函数模板…平晋重重“面面新晋日目面面血道加即菲由t日百菲毒鲁自即非菲事822类模板……2388.23模板的实例化…8.24用模板实现通用算法………………………………241目录|5第9章STL中的容器管理数据2459容器就是STL中的瓶瓶罐罐………245911操作容器中的数据元素……………24912使用迭代器访问容器中的数据元素……………247913容器的使用说明书914如何选择合适的容器…………………………25292 vector容器是数组的最佳替代者253921创建并初始化 vector对象………………………253922 vector容器的操作…256923访问 vector容器中的数据““响响·垂···甲甲甲血a由“益主s量把售中于专曾牛·想兽中出由2593可以保存键值对的map容器……………258931创建并初始化map容器……………………………………………258932将数据保存到map容器中……,,………259933根据键找到对应的值…,,260第10章用STL中的通用算法处理数据普自·,即目国日自·…26310.1STL算法中的“四大帮派”……263102容器元素的查找与遍历…………………………………2641021用 for_eacho算法遍历容器中的数据元素……………………2641022用find)和find_iO算法实现线性查找……266103容器元素的复制与变换……………………,,…,,……27010.3.1复制容器元素: copy(算法,,27010.32合并容器元素; merged算法…2721033变换容器元素: transform函数…………………………………274104容器元素的排序……27610.41使用sort(算法对容器中的数据进行排序…………………………2761042对排序的规则进行自定义105实战STL算法28210.51“算法”老师带来的一堂别开生面的体育课………………2821052删除容器中的冗余元素…率审串自非非由由申曲284第11章函数指针、函数对象与 Lambda表达式……………………287111函数指针42871111函数指针的声明与赋值……287112用函数指针调用函数………………………289目录1113用函数指针实现回调函数…,…,……,2911.14将函数指针应用到STL算法中………293112函数对象………………:051121定义一个函数对象·哪“电由电自非2951.2.2利用函数对象记住状态数据………………………………297113用 Lambda表达式编写更简单的函数…………………………………2991.31最简单直接的函数表达形式: Lambda表达式…29911.32 Lambda表达式的语法规则…………………………………30I1133 Lambda表达式的复用………………………………………302第12章C++世界的几件新鲜事305121用右值引用榨干C++的性能……面 aannnEHiniE吾吾e台音是中fd+是……,30512.1.1什么是右值…3051212右值引用在函数返回值上的应用3061213STL算法中被浪费的右值………………………………………30712.14右值引用如何提高性能………………………………………310122智能指针 shared_ptr……312122.1C++的内存管理312I222用聪明的 shared_pt解决内存管理问题………………3131223智能指针的应用场景…………………………………315224 shared_pt的使用…………………………………………3161225 shared_ptr与标准库容器……321122.6对 shared_ptr进行自定义323123用PPL进行多线程开发………………32612.31多核给程序设计带来的挑战…3261232PPL带来免费的午餐…3271233PPL中的并行算法………………3291234PPL中的并行任务…,,1,13311235PPL中的并行对象和并行容器……34123.6PPL之外的另一种选择: OpenMP340第13章找工作就靠它了34313.1打好基础………34313.1.1基本概念……………134313.1.2函数………346目录