`

我的第一本C++书(游历C++世界的地图)

阅读更多

探索C++世界的旅游地图
生动有趣又不乏实用性
掌握C++世界的运作原理
学习C++世界“居民”的思考方式
自由地穿梭于现实世界和C++世界

 

我的第一本C++书(游历C++世界的地图)

 

基本信息

  虽然C++语言纷繁复杂的语法规则让很多学习者望而却步,但是,在《我的第一本C++书》中,你会发现C++语言的学习也可以如此轻松。《我的第一本C++书》没有孔乙已式地去深究C++语言的语法细节,也没有重点地去介绍各种高深的C++编程技巧,而是本着简单实用的原则,通俗易懂地向你介绍C++中最重要、最实用的知识。看完《我的第一本C++书》,你会发现用逻辑控制语句可以把C++语句串珠成链;用函数实际上就是把程序装进一个箱子;当C++语言爱上面向对象思想就有了类与对象;算法就像体育老师,给我们带来一堂别开生面的算法体育课。《我的第一本C++书》不再是一本枯燥乏味的C++语法介绍书,而是一本通俗易懂的C++故事书,可以让我们在讲故事中轻松学会C++语言。 
 

目录

第1篇 叩开c++世界的大门 1 
第1章 c++世界地图 3 
1.1 c++是什么 3 
1.2 c++的前世今生 3 
1.2.1 从b到c 4 
1.2.2 从c到c++ 4 
1.2.3 从c++到.net framework的cli 6 
1.2.4 最新标准c++0x让c++重新焕发活力 8 
1.2.5 c++和c#不得不说的那点事儿 8 
1.2.6 c++世界的五大子语言 9 
1.3 c++世界版图 10 
1.3.1 windows系统下的c++开发 10 
1.3.2 linux系统下的c++开发 11 
1.3.3 嵌入式系统下的c++开发 11 
1.4 如何学好c++ 12 
1.4.1 将自然语言转换为c++程序设计语言 12 
1.4.2 “多读多写”是学好c++的不二法门 14 
1.4.3 和google做朋友 14 
第2章 与c++第一次亲密接触 17 
2.1 一个c++程序的自白 17 
.2.1.1 用visual studio创建c++程序 17 
2.1.2 以手工方式创建c++程序 20 
2.1.3 c++程序=预编译指令+程序代码+注释 21 
2.1.4 编译器和链接器 25 
2.1.5 c++程序的执行过程 26 
2.1.6 程序的两大任务:描述数据与处理数据 27 
2.2 基本输入/输出流 28 
2.2.1 标准的输入和输出对象 29 
2.2.2 输出格式控制 31 
2.2.3 读/写文件 32 
2.3 最常用的开发环境visual studio 34 
2.3.1 visual c++的常用菜单 35 
2.3.2 visual c++的常用视图 44 
2.4 c++世界旅行必备的物品 46 
2.4.1 编程助手visual assist 46 
2.4.2 代码配置管理工具visual source safe 48 
2.4.3 codeproject和codeguru 48 
2.4.4 c++百科全书msdn 48 
第2篇 欢迎来到c++世界 51 
第3章 c++世界众生相 53 
3.1 c++中的数据类型 53 
3.2 变量和常量 54 
3.2.1 声明变量 55 
3.2.2 给变量取个好名字 55 
3.2.3 变量初始化 57 
3.2.4 常量 57 
3.2.5 用宏与const关键字定义常量 59 
3.3 数值类型 62 
3.3.1 整型数值类型 62 
3.3.2 浮点型数值类型 63 
3.4 布尔类型 64 
3.5 字符串类型 65 
3.5.1 字符类型 65 
3.5.2 字符串类型 66 
3.6 数组 67 
3.6.1 数组的声明与初始化 68 
3.6.2 数组的使用 69 
3.7 枚举类型 71 
3.8 用结构体类型描述复杂的事物 73 
3.8.1 结构体的定义 73 
3.8.2 结构体的使用 74 
3.9 指向内存位置的指针 76 
3.9.1 指针就是表示内存地址的数据类型 76 
3.9.2 指针变量的定义 77 
3.9.3 指针的赋值和使用 78 
第4章 将语句编织成程序 81 
4.1 用运算符对数据进行运算 81 
4.1.1 用表达式表达设计意图 82 
4.1.2 算术运算符 82 
4.1.3 赋值操作符 84 
4.1.4 关系运算符 84 
4.1.5 逻辑运算符 86 
4.1.6 运算符之间的优先顺序 87 
4.1.7 将表达式组织成语句 89 
4.2 条件选择语句 90 
4.2.1 if语句 90 
4.2.2 并列选择的switch语句 93 
4.3 循环控制语句 97 
4.3.1 while循环 97 
4.3.2 do…while循环 99 
4.3.3 for循环 100 
4.3.4 循环控制:break和continue 102 
4.4 从语句到程序 104 
4.4.1 程序是控制语句串联起来的语句 104 
4.4.2 豪华工资统计程序 106 
第5章 用函数封装程序功能 109 
5.1 函数就是一个大“箱子” 109 
5.1.1 函数的声明和定义 110 
5.1.2 函数调用机制 113 
5.1.3 函数的声明与函数调用 117 
5.1.4 函数参数的传递 119 
5.1.5 函数的返回值 121 
5.2 内联函数 123 
5.2.1 用体积换速度的内联函数 123 
5.2.2 内联函数的使用规则 124 
5.3 重载函数 125 
5.3.1 重载函数的声明 125 
5.3.2 重载函数的解析 128 
5.4 函数设计的基本规则 129 
5.4.1 函数声明的设计规则 129 
5.4.2 函数体的设计规则 131 
第6章 当c++爱上面向对象 135 
6.1 从结构化设计到面向对象程序设计 135 
6.1.1 “自顶向下,逐步求精”的结构化程序设计 136 
6.1.2 面向对象程序设计 137 
6.1.3 面向对象的三座基石:封装、继承与多态 138 
6.2 类:当c++爱上面向对象 142 
6.2.1 类的声明和定义 142 
6.2.2 使用类创建对象 146 
6.2.3 构造函数和析构函数 148 
6.2.4 拷贝构造函数 152 
6.2.5 操作符重载 155 
6.2.6 类成员的访问控制 157 
6.2.7 在友元中访问类的隐藏信息 160 
6.3 类如何面向对象 162 
6.3.1 用类机制实现封装 163 
6.3.2 用基类和派生类实现继承 164 
6.3.3 用虚函数实现多态 171 
6.4 实战面向对象:工资管理系统 175 
6.4.1 从问题描述中发现对象 175 
6.4.2 分析对象的属性和行为 176 
6.4.3 实现类的属性和行为 177 
6.5 高手是这样炼成的 183 
6.5.1 c++类对象的内存模型 183 
6.5.2 指向自身的this指针 185 
第7章 c++世界的奇人异事 189 
7.1 一切指针都是纸老虎:彻底理解指针 189 
7.1.1 指针的运算 189 
7.1.2 灵活的void类型和void类型指针 192 
7.1.3 指向指针的指针 194 
7.1.4 指针在函数中的应用 195 
7.1.5 引用 198 
7.2 程序中的异常处理 203 
7.2.1 异常处理 203 
7.2.2 异常的函数接口声明 206 
7.2.3 合理使用异常处理 207 
7.3 编写更复杂的c++程序 208 
7.3.1 源文件和头文件 208 
7.3.2 名字空间 210 
7.3.3 作用域与可见性 214 
7.3.4 编译预处理 218 
7.4 高手是这样炼成的 220 
7.4.1 用宏定义化繁为简 220 
7.4.2 用typedef定义类型的别名 221 
7.4.3 用const保护数据 223 
第3篇 攀登c++世界的高峰 227 
第8章 用stl优雅你的程序 229 
8.1 跟stl做朋友 230 
8.1.1 算法 + 容器 + 迭代器 = stl 230 
8.1.2 在程序中使用stl 231 
8.1.3 stl到底好在哪里 233 
8.2 用模板实现通用算法 234 
8.2.1 函数模板 235 
8.2.2 类模板 238 
8.2.3 模板的实例化 240 
8.2.4 用模板实现通用算法 241 
第9章 stl中的容器管理数据 245 
9.1 容器就是stl中的瓶瓶罐罐 245 
9.1.1 操作容器中的数据元素 247 
9.1.2 使用迭代器访问容器中的数据元素 247 
9.1.3 容器的使用说明书 249 
9.1.4 如何选择合适的容器 252 
9.2 vector容器是数组的最佳替代者 253 
9.2.1 创建并初始化vector对象 253 
9.2.2 vector容器的操作 256 
9.2.3 访问vector容器中的数据 257 
9.3 可以保存键值对的map容器 258 
9.3.1 创建并初始化map容器 258 
9.3.2 将数据保存到map容器中 259 
9.3.3 根据键找到对应的值 260 
第10章 用stl中的通用算法处理数据 263 
10.1 stl算法中的“四大帮派” 263 
10.2 容器元素的查找与遍历 264 
10.2.1 用for_each()算法遍历容器中的数据元素 264 
10.2.2 用find()和find_if()算法实现线性查找 266 
10.3 容器元素的复制与变换 270 
10.3.1 复制容器元素:copy()算法 270 
10.3.2 合并容器元素:merge()算法 272 
10.3.3 变换容器元素:transform函数 274 
10.4 容器元素的排序 276 
10.4.1 使用sort()算法对容器中的数据进行排序 276 
10.4.2 对排序的规则进行自定义 279 
10.5 实战stl算法 282 
10.5.1 “算法”老师带来的一堂别开生面的体育课 282 
10.5.2 删除容器中的冗余元素 284 
第11章 函数指针、函数对象与lambda表达式 287 
11.1 函数指针 287 
11.1.1 函数指针的声明与赋值 287 
11.1.2 用函数指针调用函数 289 
11.1.3 用函数指针实现回调函数 291 
11.1.4 将函数指针应用到stl算法中 293 
11.2 函数对象 295 
11.2.1 定义一个函数对象 295 
11.2.2 利用函数对象记住状态数据 297 
11.3 用lambda表达式编写更简单的函数 299 
11.3.1 最简单直接的函数表达形式:lambda表达式 299 
11.3.2 lambda表达式的语法规则 301 
11.3.3 lambda表达式的复用 302 
第12章 c++世界的几件新鲜事 305 
12.1 用右值引用榨干c++的性能 305 
12.1.1 什么是右值 305 
12.1.2 右值引用在函数返回值上的应用 306 
12.1.3 stl算法中被浪费的右值 307 
12.1.4 右值引用如何提高性能 310 
12.2 智能指针shared_ptr 312 
12.2.1 c++的内存管理 312 
12.2.2 用聪明的shared_ptr解决内存管理问题 313 
12.2.3 智能指针的应用场景 315 
12.2.4 shared_ptr的使用 316 
12.2.5 shared_ptr与标准库容器 321 
12.2.6 对shared_ptr进行自定义 323 
12.3 用ppl进行多线程开发 326 
12.3.1 多核给程序设计带来的挑战 326 
12.3.2 ppl带来免费的午餐 327 
12.3.3 ppl中的并行算法 329 
12.3.4 ppl中的并行任务 331 
12.3.5 ppl中的并行对象和并行容器 334 
12.3.6 ppl之外的另一种选择:openmp 340 
第13章 找工作就靠它了 343 
13.1 打好基础 343 
13.1.1 基本概念 343 
13.1.2 函数 346 
13.1.3 面向对象思想 348 
13.1.4 类与对象 349 
13.1.5 stl 360 
13.2 积累经验 362 
13.3 考查智力 364 
附录a 接下来该读什么书 367 
a.1 开山鼻祖:《c++程序设计语言》 367 
a.2 初学者必看:《c++ primer中文版(第4版)》 368 
a.3 百科全书:《代码大全,第2版》 368 
a.4 内功秘籍:《effective c++(third edition)》 370 
a.5 经验很重要:《c++编程规范》 370 
后记 373  

  • 大小: 9.1 KB
分享到:
评论

相关推荐

    qishiyouli.zip_c++骑士游历_site:www.pudn.com_骑士游历C++

    需要注意的是,骑士游历问题可能存在多个解,因此在实际应用中,可能需要对结果进行处理,比如存储所有解或者只显示第一个解。此外,由于递归深度可能会很大,为了避免栈溢出,可以考虑使用迭代或尾递归优化。 通过...

    NOIP2012普及组复赛解题报告c++版本.docx

    #### 第一题:质因数分解 **题目概述**: 本题要求找出一个由两个不同质数相乘得到的正整数\( n \)中较大的质因数。 **解决思路**: 由于题目指出\( n \)是两个不同质数的乘积,因此我们可以通过枚举的方式找到较...

    程序设计艺术课程实验作业题1

    在第一次实验中,我们着重介绍C++中的STL(Standard Template Library),它是C++的核心组件之一。STL提供了一系列的容器类和算法,极大地丰富了C++语言的功能。容器类,如vector和list,是数据管理的基础。学生需要...

    数据结构演示软件

    第一级菜单中的各项与上述“系统内容”中各大项相对应,读者运行“算法演示课件”后, 即进入“算法选择一级菜单”画面,此时可移动光标进行选择,当光标所在菜单项改为红色时,单击鼠标即进入“算法选择二级菜单”,...

    少儿编程scratch项目源代码文件案例素材-绝地求生.zip

    少儿编程scratch项目源代码文件案例素材-绝地求生.zip

    嵌入式八股文面试题库资料知识宝典-文思创新面试题2010-04-08.zip

    嵌入式八股文面试题库资料知识宝典-文思创新面试题2010-04-08.zip

    一种基于剪切波和特征信息检测的太阳斑点图融合算法.pdf

    一种基于剪切波和特征信息检测的太阳斑点图融合算法.pdf

    并联型APF有源电力滤波器Matlab Simulink仿真:dq与αβ坐标系下的谐波无功检测与PI控制及SVPWM调制

    内容概要:本文详细介绍了并联型有源电力滤波器(APF)在Matlab/Simulink环境下的仿真研究。主要内容涵盖三个关键技术点:一是dq与αβ坐标系下的谐波和无功检测,利用dq变换和FBD技术实现实时检测;二是两相旋转坐标系(dq)与两相静止坐标系(αβ)下的PI控制,通过调整比例和积分环节实现精准控制;三是SVPWM调制方式的应用,通过优化开关时序提升系统效率和性能。文中还提供了详细的仿真介绍文档,包括模型搭建、参数设定以及结果分析。 适合人群:从事电力电子、自动化控制领域的研究人员和技术人员,尤其是对电力滤波器仿真感兴趣的读者。 使用场景及目标:适用于需要深入了解并联型APF工作原理和实现方式的研究人员,旨在通过仿真工具掌握谐波和无功检测、PI控制及SVPWM调制的具体应用。 其他说明:本文不仅提供了理论知识,还结合了实际操作步骤,使读者能够通过仿真模型加深对APF的理解。

    Arduino KEY实验例程【正点原子ESP32S3】

    Arduino KEY实验例程,开发板:正点原子EPS32S3,本人主页有详细实验说明可供参考。

    嵌入式八股文面试题库资料知识宝典-嵌入式C语言面试题汇总(66页带答案).zip

    嵌入式八股文面试题库资料知识宝典-嵌入式C语言面试题汇总(66页带答案).zip

    .archivetempdebug.zip

    .archivetempdebug.zip

    嵌入式系统开发_CH551单片机_USB_HID复合设备模拟_基于CH551单片机的USB键盘鼠标复合设备模拟器项目_用于通过CH551微控制器模拟USB键盘和鼠标输入设备_实现硬.zip

    嵌入式系统开发_CH551单片机_USB_HID复合设备模拟_基于CH551单片机的USB键盘鼠标复合设备模拟器项目_用于通过CH551微控制器模拟USB键盘和鼠标输入设备_实现硬

    少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip

    少儿编程scratch项目源代码文件案例素材-剑客冲刺.zip

    少儿编程scratch项目源代码文件案例素材-火影.zip

    少儿编程scratch项目源代码文件案例素材-火影.zip

    两极式单相光伏并网系统的Boost电路与桥式逆变仿真及优化方法

    内容概要:本文详细介绍了两极式单相光伏并网系统的组成及其仿真优化方法。前级采用Boost电路结合扰动观察法(P&O)进行最大功率点跟踪(MPPT),将光伏板输出电压提升至并网所需水平;后级利用全桥逆变加L型滤波以及电压外环电流内环控制,确保并网电流与电网电压同频同相,实现高效稳定的并网传输。文中还提供了具体的仿真技巧,如开关频率设置、L滤波参数计算和并网瞬间软启动等,最终实现了98.2%的系统效率和低于0.39%的总谐波失真率(THD)。 适合人群:从事光伏并网系统研究、设计和开发的技术人员,特别是对Boost电路、MPPT算法、逆变技术和双环控制系统感兴趣的工程师。 使用场景及目标:适用于希望深入了解两极式单相光伏并网系统的工作原理和技术细节的研究人员和工程师。目标是在实际项目中应用这些理论和技术,提高光伏并网系统的效率和稳定性。 其他说明:文中提供的仿真技巧和伪代码有助于读者更好地理解和实现相关算法,在实践中不断优化系统性能。同时,注意电网电压跌落时快速切换到孤岛模式的需求,确保系统的安全性和可靠性。

    昭通乡镇边界,矢量边界,shp格式

    矢量边界,行政区域边界,精确到乡镇街道,可直接导入arcgis使用

    嵌入式八股文面试题库资料知识宝典-嵌入式c面试.zip

    嵌入式八股文面试题库资料知识宝典-嵌入式c面试.zip

    嵌入式八股文面试题库资料知识宝典-I2C总线.zip

    嵌入式八股文面试题库资料知识宝典-I2C总线.zip

    岩土工程中随机裂隙网络注浆模型及其应用:不同压力下注浆效果的研究

    内容概要:本文详细介绍了三种注浆模型——随机裂隙网络注浆模型、基于两相达西定律的注浆模型、基于层流和水平集的注浆扩散模型。首先,随机裂隙网络注浆模型基于地质学原理,模拟裂隙网络发育的实际地质情况,在不同注浆压力下进行注浆作业,以增强地基稳定性和提高承载能力。其次,基于两相达西定律的注浆模型利用数学公式模拟裂隙网络中的流体输送过程,适用于裂隙网络地质条件下的注浆效果分析。最后,基于层流和水平集的注浆扩散模型通过引入层流特性和水平集方法,更准确地模拟注浆过程中的扩散过程。文中还讨论了不同注浆压力对注浆效果的影响,并提出了优化建议。 适合人群:从事岩土工程、地基加固等相关领域的工程师和技术人员。 使用场景及目标:①帮助工程师选择合适的注浆模型和注浆压力;②为实际工程项目提供理论支持和技术指导;③提升地基加固的效果和效率。 其他说明:文章强调了在实际应用中需要结合地质条件、裂隙网络特点等因素进行综合分析,以达到最佳注浆效果。同时,鼓励不断创新注浆工艺和方法,以满足日益增长的地基加固需求。

    COMSOL Multiphysics 5.5与6.0版本Ar棒板粗通道流注放电仿真的电子特性分析

    内容概要:本文详细比较了COMSOL Multiphysics软件5.5和6.0版本在模拟Ar棒板粗通道流注放电现象方面的异同。重点探讨了不同版本在处理电子密度、电子温度、电场强度以及三维视图等方面的优缺点。文中不仅介绍了各版本特有的操作方式和技术特点,还提供了具体的代码实例来展示如何进行精确的仿真设置。此外,文章还讨论了网格划分、三维数据提取和电场强度后处理等方面的技术难点及其解决方案。 适合人群:从事等离子体物理研究的专业人士,尤其是熟悉COMSOL Multiphysics软件并希望深入了解其最新特性的研究人员。 使用场景及目标:帮助用户选择合适的COMSOL版本进行高效、精确的等离子体仿真研究,特别是在处理复杂的Ar棒板粗通道流注放电现象时提供指导。 其他说明:文章强调了在实际应用中,选择COMSOL版本不仅要考虑便捷性和视觉效果,还需兼顾仿真精度和可控性。

Global site tag (gtag.js) - Google Analytics