先看一眼章节占比图:
由图可知:
-
本书(上册,即练功篇)最大一块的学习内容是第7章“语言”,即C++语言的语法、语义、逻辑表达等。它让你从什么都不会到会写程序解决绝大多数问题。
-
第2是第8章“面向对象”。它让你在面对更复杂、庞大的问题,并且往往存在多人共同合作编程时,有一个更好的的代码组织团队分工。
-
第3是第3章“感受(一)”。这是一个让你以快速的、高效地全面了解C++语言的“速成篇”,学完这章,你就将是在脑海中已经建立有待学知识的“整张地图”的情况进行更加深入的探索;而不是一直在盲人摸象,摸到最后才知道整体是什么。
-
第4是第5章“基础”。学编程语言,有计算机基础知识和没有,效率与效果天差地别。
-
第5是第9章“泛型”。初学者一定要避免过早掉入泛型的实现细节,在对基本原理与概念理解之后,泛型重点在使用!泛型重点在使用!泛型重点在使用!
第1章启蒙
我们花近20页的篇幅,以大白话的形式向您讲解这个行业最最最基础的一些概念:计算机、硬件、软件 、指令、程序、编程语言……我们还描述一个程序员大概的,应该是一个什么样子的人……如果这些内容你听得懂,并且不觉乏味,甚至觉得有趣……如果你觉得自己可以成为“那种人”。那么,我们认为你很适合学习编程,特别是适合学习C++编程。
如果不是呢?也不要紧,也许、应该、我想、大概可能就是我们写错了而已。
“你愿意成为一名程序吗?”
“愿意。”
1.1 开始-1
1.2 什么是计算机-4
1.3 什么是硬件、软件-6
1.4 什么是程序-7
1.5 什么是编程语言-9
1.6 什么是IDE1-5
1.7 你是程序员-17
1.8 出发赠言-19
第2章准备
“你适合当程序员”跟“你能扛过去真正成为一名程序员”是两件不同的事。
如果说第一章的20页你可以喝着咖啡,听着音乐轻轻松松看完的话,那么《准备》章的20页,大概率会让你剥下一层皮——如果你做事缺乏耐心和细心的话。 不过也不用太担忧,第2学堂网站已在提供该章节中各个开发包、软件工具的手把手安装视频配套课程。
前面两道门槛:不耐烦和粗心大意。
2.1 基础知识-20
2.2 安装IDE——Code::Blocks-23
2.3 系统编译环境变量-29
2.4 安装wxWidgets-30
2.5 安装boost-33
2.6 安装MySQL-35
2.7 安装MySQL++-39
2.8 配置Code::Blocks全局变量-41
第3章-感受(一)
从“Hello world”到“Hello Object”再到“Hello STL”——本章你将快速但又不失一定深度的学习C++语言最主要三大知识群:基本语言、面向过程、泛形(模板)编程。并且彼此之间衔接得当。所以,千万不要小看 “Hello” 系列课程的的力量,学完本章,你的C++技能可能已经比那些学不得法的人要厉害得多。
Hello world!
3.1 Hello world经典版-45
3.2 Hello world中文版-56
3.3 Hello world函数版-58
3.4 Hello world交互版-61
3.5 Hello world分支版-65
3.6 Hello world循环版-68
3.7 Hello Object生死版-70
3.8 Hello Object成员版-81
3.9 Hello Object派生版-86
3.10 Hello Object多态版-92
3.11 Hello Object封装版-99
3.12 Hello STL向量篇-110
3.13 Hello STL链表篇-123
3.14 Hello STL算法篇-137
3.15 Hello STL文件篇-160
第4章-感受(二)
在让学生一头扎入C++语言的语法知识点海洋之前,要让他抱有强烈的求生欲望,否则他很容易放弃,死在深海……《白话C++》在第4章就让你感受C++可以:
-
写漂亮的图形用户界面(GUI)——这是C++的历史强项;
-
可以连接网络——99%的程序都需要联网了吧?
-
可以连接数据库——80%的程序,都是基于数据库的程序!
这当然只是C++强大功能的极小的一部分,但我们不能一边夸C++强大,一边却只让学习者成天埋在黑乎乎的“控制台”或“终端”窗口写一些玩具程序……
我们一头扎入C++语法在大洋深处,不远的海岸线,水面倒映着一幢幢建筑。每一座建筑的某面墙上,都镌刻着“C++ Inside”。
4.1 Hello GUI基础篇-170
4.2 Hello GUI布局篇-175
4.3 Hello Internet-184
4.4 Hello Database-188
第5章-基础
有些花儿,要离得远些,才能嗅得到它的暗香;有些知识,要历经多年,才能感受到它的力量。
奠定你的编程技能大厦的根基,把你从众多浮萍一般的无退程序员当中区分出来的关键知识。举个最简单的实例:
-
因为:你不理CPU、不理寄存器、甚至不理内存这些概念;
-
所以:你不懂原来一份数据会生存在多个物理空间;
-
结果:你难于理解并发时的某些访问冲突。
5.1 从代码到程序-198
5.2 构建C++程序-202
5.3 项目/Project-209
5.4 进程与内存-216
5.5 内存分段-220
5.6 CPU、寄存器-225
5.7 线程-227
5.8 数据与内存-230
5.9 进制(一)-258
5.10 进制(二)-263
第6章IDE——Code::Blocks
IDE,不就是写代码的软件吗?听说它不重要,确实它也不重要——但这些都是对高手说的。马云还说钱不重要呢……我见过很多学生逻辑思维不错,很适合学习编程,但他们的程序员学习之旅没有死在繁琐的语法前面,也没有死在复杂的逻辑组织下,却早早死在折腾写代码的工具上面。
工欲善其事,必先利其器。
6.1 窗口布局-271
6.2 环境设置-273
6.3 编辑器设置-279
6.4 编译器全局设置-287
6.5 调试器全局设置-288
6.6 全局路径变量-289
6.7 项目管理-290
6.8 项目构建选项-294
6.9 项目属性-300
6.10 项目实践-303
6.11 调试-307
第7章-语言
语言最重要,语言最不重要,语言最简单,语言最难学……其实,语言之于编程技能的作用,就有如青春期之于人的一生的作用……认真思考问题并回答我,如果可能,你愿意在12岁生日之后,直接跳到30岁吗?或者,我们换一个角度思考:既然青春期叛逆、冲动、不成熟、甚至容易干许多荒唐事……所以青春期对于人的一生,毫无作用吗?
请一定一定努力学好语言,否则未来总有一天你会变成一个充满后悔的中年人:别人的青春期活力四射,我的青春期竟然是一张白纸!
每个人都有青春期。青春好像很重要,也好像不重要。
7.1 字面量-313
7.2 类型-327
7.3 类型基础行为-345
7.4 变量和常量-385
7.5 引用-388
7.6 指针-401
7.7 数组-409
7.8 STL常用类型-420
7.9 生存期、作用域、可见性、访问限定-451
7.10 函数-477
7.11 Lambda函数-519
7.12 操作符与表达式-527
7.13 语句与流程-544
7.14 模板-580
7.15 异常-593
7.16 并行流程615
第8章-面向对象
本章适合心理年龄30岁以上的人学习。最好有谈过几段恋爱,被人抛弃过,也抛弃过人,得意过,也失意过,如果还发过财也破过产,那就更好了……
面向对象的思想,最核心的精髓,无非两个字:妥协。可惜太多人一生都读不懂这两字。
从繁冗处学,向简易处用。
8.1 抽象-634
8.2 封装-643
8.3 派生-735
8.4 基于对象例程-759
8.5 多态-779
8.6 OO设计原则-792
8.7 综合练习-815
第9章-泛型
整本书都快完了,815页了!你已经能熟练地写好多复杂的C++代码了,你对面向对象的理解很可能比别人要深刻得多……可严格地说,你还没有经历过真正的C++程序员之考验。甚至,我们现在非常担心的一件事,就是你会不会因为第8章的修习而变成一名沉迷于面向对象的“原教旨主义”者?千万别!编程只是一种工具,甚至连一门手艺都算不上,面向过程也好,基于对象也好,面向对象也好,泛型也好,甚至命令式编程或函数式编程之间, 只是工具不同,无关任何门派之争,更谈不上信仰。
如果有人来说:“相信我,只要一门语言,一种纯正的某某思路,可以美好地解决所有问题……”。请唾弃他,就像唾弃向你兜售包治百病的药的SB一样。毕竟,我们是成年人了。
让 C++如此 C++。
9.1 泛型概念-820
9.2 基础回顾-820
9.3 模板实例化-825
9.4 泛型应用实例-838
9.5 泛型特化-872
参考文献-881
[1] Bjarne Stroustrup, C++程序设计语言(特别版) [M]. 裘宗燕,译. 北京: 机械工业出版社,2010.
[2] Bjarne Stroustrup, C++语言的设计和演化(影印版) [M]. 北京: 机械工业出版社, 2002.
[3] Stanley B.Lippman, Josée Lajoie, Barbara E.Moo, C++ Primer 中文版(第4版) [M]. 李师贤,蒋爱军, 梅晓勇, 林瑛, 译. 北京: 人民邮电出版社, 2006.
[4] Nicolai M. Josuttis, C++标准程序库 [M]. 侯捷, 孟岩, 译. 武汉: 华中科技大学出版社, 2002.
[5] Nicolai M. Josuttis C++标准库 (第2版) [M]. 侯捷, 译. 北京: 电子工业出版社, 2015.
[6] Michael Wong, IBM XL编译器中国开发团队, 深入理解C++11 [M]. 北京: 机械工业出版社, 2013.
[7] Scott Meyers, Effective Modern C++ (影印版) [M]. 南京: 东南大学出版社, 2015.
[8] Scott Meyers, Effective C++中文版 (第二版) [M]. 侯捷, 译. 武汉: 华中科技大学出版社, 2001.
[9] Scott Meyers, More Effective C++ 中文版 [M]. 侯捷, 译. 北京: 中国电力出版社, 2003.
[10] Matthew Wilson, Imperfect C++ 中文版 [M]. 荣耀, 刘未鹏, 译. 北京: 人民邮电出版社, 2006.
[11] 罗剑锋, Boost 程序库完全开发指南 [M]. 北京: 电子工业出版社, 2013.
[12] F.Alexander Allain, C++程序设计现代方法 [M]. 赵守彬, 陈园军, 马兴旺, 译. 北京: 人民邮电出版社, 2014.
[13] Steve McConnell, 代码大全 (第2版) [M]. 金戈, 汤凌, 陈硕, 张菲, 译. 北京: 电子工业出版社, 2006.
[14] 唐峻, 李淳, C/C++常用算法手册 [M]. 北京: 中国铁道出版社, 2014.
[15] David V, Nicolaj MJ, Douglas G. C++ Templates: The Complete Guide [M]. 2版. 美国:Addison-Wesley Professional,2007.
[16] Scott M. Effective Modern C++ 中文版[M]。高博,译. 北京:中国电力出版社 2018.