视频
第1章 启蒙
“我适合学习编程吗”? 这个问题挺多人问的。考察方法有二:一是考量个人的脾气、秉性等等,二是实际测试学习者对计算机领域的一些基础概念的理解能力。
人们常说的“动手能力”,事实上,人先天有记忆力力强弱之分,也可以测试智力,但没有单独存在的动手能力。动手能力通常由一个人后天已经养成的脾气、秉性决定高低。
如:书中提到 “你的计算机现在安装的操作系统(比如Windows)”,是64位的,还是32位的?一个人可能会说,都什么时代了,我的电脑肯定是64位的——这属于判断力不错的——但是,如果我们就是想看到他的动手能力;非要让他在电脑上找到一个简单直观的证明时;有些人就不想动手,纠其原因,可能就是单纯的懒; 也可能是觉得明知是64位的了,还要自寻证明,没意义;也有可能是觉得做这类事情没意思。只有极少数人,是真的找不出来。
除了动手能力要强,学习编程最好要有很强的“创作欲”。你在抖音上可以搜索出大量的“儿童手工”类的视频;并且只要不是太差,通常流量都不错——因为确实有大量的小朋友,喜欢做手工。和吃雪糕或坐摇摇车相比,做手工的快乐是什么?答:许多儿童都有“创作欲”,做手工的快乐,就是通过辛苦、专注的劳动投入后,得到预期的作品的那种快乐。
所以视频里才会“推出”一种新的“我是否适合学习编程”的评测方法:玩下面的玩具:
注意,正如视频中提到的考评要点:你既不能完全就想自己发挥,不想去“按图拼装”;也不能只想看着现有的图甚至提步骤拼装,完全不想自我发挥。
启蒙 一级目录
1.1 开始
学习编程很难,如果你想要学习的编程语言偏偏又是C++,那就更难了。
作为作者,我希望《白话 C++》能够陪伴C++ 初学者至少 730 天的中途,或者更远一点,直到你找到更合适的伙伴。因此我在努力保留必备知识点的前提下,力求将书写得更通俗易懂,但也要在此小心翼翼地发问:“你真的要学习C++ 吗?”
1.2 什么是计算机
符合“冯诺依曼体系结构”的云计算机,基本上拥有以下五大部件:运算器 CA、逻辑控制器 CC、存储器 M、输入装置 I 和输出装置 O。其中存储器 M 的存在尤为出彩。
1.3 什么是硬件、软件
1.4 什么是程序
1.5 什么是编程语言
1.6 什么是IDE
1.7 你是程序员
1.8 出发赠言
在C++ 设计中有一条指导原则,那就是:无论做什么事情,都必须相信程序员。与可能出现的什么样的错误相比,能做出什么好事情更重要。C++ 程序员总被看作是成年人,只需要最少的看护。 —— C++ 之父 : Bjarne Stroustrup
第2章 准备
准备 一级目录
2.1 基础知识
2.2 安装IDE
2.3 系统编译环境变量
2.4 安装 wxWidgets
2.5 安装 boost
2.6 安装 MySQL
2.7 安装 MySQL++
2.8 配置 Code::Blocks 全局变量
配套视频课程
《白话C++》准备篇●配套视频课程
第3章 感受(一)
感受(一) 完整目录
这一章是本 在线课程(
《白话C++》感受与探索之旅)在书上的主要对应章节;所以我们把这一章的完整目录都给出来。
3.1 Hello World 经典版
3.1.1 向导-控制台项目
3.1.2 初识代码
3.1.3 头文件
3.1.4 标准输出 cout
3.1.5 名字空间
3.1.6 函数
3.1.7 主函数
3.1.8 注释
3.2 Hello World 中文版
3.2.1 “字符集” 和 “编码”
3.2.2 问题与解决
3.3 Hello world 函数版
3.3.1 定义函数
3.3.2 调用函数
3.3.3 重复调用
3.3.4 带参函数
3.4 Hello world 交互版
3.4.1 变量
3.4.2 常量
3.4.3 数据类型
3.4.4 定义变量
3.4.5 完成交互
3.5 Hello world 分支版
3.5.1 流程控制 if-else
3.5.2 修改 Hello 函数 —— 区别对待
没错,就是在区别对待 女神 和 普通同事;只是,用的是名字判断。
3.5.3 多级 if-else
3.5.4 常见关系、逻辑操作符
3.6 Hello world 循环版
3.6.1 流程控制 while
3.6.2 修改 main 函数 —— 反复操作
3.7 Hello Object 生死版
3.7.1 定义对象类型
知道我们定义的第一个对象的是什么类型吧?
3.7.2 创建对象
3.7.3 构造对象
对应 对象的出生行为
3.7.4 析构函数
对应 对象的死前行为
3.7.5 对象生生命周期
“栈二代”和“堆二代”的先天差异,竟然是生命长短之区别!
3.7.6 对象也内存
3.7.7 对象的可见区域
3.8 Hello Object 成员版
3.8.1 成员数据
3.8.2 成员函数
3.9 Hello Object 派生版
3.9.1 使用分支
派用的一个很大用途,就是用来取代在“数据类型”上的分支判断,这里我们特意继续使用旧的方法(if/else)实现,以利读者对比。
3.9.2 为何派生
3.9.3 如何派生
3.9.4 定义“美人类”
一晃十多年过去了,全网都传……遭遇?希望不是真的……在些留下一张志玲姐姐年轻时的照片,作为这本书的一个特殊的见证。
3.9.5 使用“美人类”
3.9.6 变和不变
变:相比普通人,美人变美了;不变:美人当然是人。
3.9.7 派生类的生死过程
3.10 Hello Object 多态版
3.10.1 虚函数
C++ 面试必考题
3.10.2 虚“析构函数”
C++ 面试必考题
3.10.3 应用虚函数
3.10.4 多态 vs. 非多态
3.11 Hello Object 封装版
3.11.1 什么是封装
3.11.2 类型即封装
3.11.3 公开、保护、私有
3.11.4 class vs. struct
3.11.5 封装应用示例
3.11.6 常量成员函数
3.12 Hello STL 向量篇
3.12.1 基础
3.12.2 常用接口
3.12.3 遍历
3.12.4 实例:选美大赛管理系统
** 3.13 Hello 链表篇**
3.13.1 基础
3.13.2 迭代器 / iterator 概念
3.13.3 常用函数 1
3.13.4 常用函数 2
3.13.5 常量迭代器
3.13.6 遍历 list 容器
3.13.7 实例:成绩管理系统 1.0
3.14 Hello STL 算法篇
3.14.1 函数对象
3.14.2 自定义查找算法
3.14.3 泛化查找算法
3.14.4 标准库查找算法
3.14.5 标准库排序算法
3.14.6 实例:成绩管理系统 2.0
3.15 Hello STL 文件篇
3.15.1 写文件
3.15.2 读文件
2.15.3 带格式读取
2.15.4 实例:成绩管理系统 3.0
感受(一)完成,你的C++入门了。
第4章 感受(二)
4.1 Hello GUI 基础篇
4.2 Hello GUI 布局篇
4.3 Hello Internet
4.4 Hello Database
第5章 基础
5.1 从代码到程序
5.2 构建 C++ 程序
5.3 项目 / Project
学会如何管理多个C++源文件
5.4 进程与内存
那个天杀的 “我要、我要、我还要” 的程序,在这里。
5.5 内存分段
5.6 CPU、寄存器
5.7 线程
没错,在这里,我们就开始写多线程程序了。
5.8 数据与内存
本章第三次出现“内存”的小节了,没错,C++ 程序最强大,也是最让很多人觉得控制不了的事,就是能直接操控内存。同时,令多少人闻风丧胆的“指针”,在本小节,我们玩得很嗨。
5.9 进制(一)
5.10 进制(二)
第6章 IDE——Code::Blocks
6.1 窗口布局
6.2 环境设置
6.3 编辑器设置
6.4 编译器全局设置
6.5 调试器全局设置
6.6 全局路径变量
6.7 项目管理
6.8 项目构建选项
6.9 项目属性
6.10 项目实践
在这一节,我们构建出“动态库”和“静态库”,如果有人愿意用我们的库的话,嗯,那我们就是别人的第三方了……
6.11 调试
第7章 语言
我们主要使用 C++11标准,个别地方用到 C++14。
7.1 字面量
7.2 类型
7.3 类型基础行为
以上两小节扣应基础章中学习的: “类型即封装”。
7.4 变量和常量
这里的常量,不仅包含 const 修饰的数据,也包括 const 修饰的类成员。相比“数据”或“动作”,“变”或“不变”更需要程序员投入注意,无论是使用还是设计。
7.5 引用
7.6 指针
放心,虽然这是第一次出现以“指针”名的小节,但其实指针早就在前面和我们混得那叫一个脸熟!
7.7 数组
7.8 STL 常用类型
没错,STL是好东西,早用早爽。本节用到:
- std::string/wstring(一直在用)、
- std::list(感受过了)、
- std::vector(感受过了)、
- std::array、
- std::map、
- std::ofstream/std::ifstream(文件,感受过)、
- std::stringstream
- 智能指针 (std::unique_ptr、std::shared_ptr)
7.9 生存期、作用域、可见性、访问限定
7.10 函数
7.11 lambda 函数
7.12 操作符与表达式
7.13 语句与流程
7.14 模板
正如视频所说,模板会在语言章节中就学习、使用
7.15 异常
这一小节有一个精彩的“黑”社会的故事,可惜 《狂飙》的导演没有学习 C++ 。
来一小段吧:
…… 这一次,小i(黑社会底层小人物)的任务是在黄昏时刻,化装成路边烤羊肉串的小贩,然后与关键人物对上暗号,再然后……一切安排周密,一分一秒,接着时间即将到来。小i神情自若地叫卖着,然后万万没有想到,万万没有想到的……关键时刻城管出现了!只有 0.1 秒,小i 身边原本一起摆摊的小商小贩位消失一空。唯留经验不足的小i张着大嘴,双腿发抖,看着城管走过来……
这,就是斧头帮行动的一次异常。事发突然,刻不容缓,此时此刻小i除了在心里奔跑过一千匹马之外,他,还能怎么做?
怎么做?当然是抛(throw)异常啦,如果用“错误返回机制”,错误码一层层往上返回,岂不正好被顺藤摸瓜,层层被抓?
7.16 并行流程
第8章 面向对象
8.1 抽象
8.2 封装
8.3 派生
8.4 基于对象例程
使用 “基于对象”思想编程,通常只用到 封装、派生,比较少用多态。
8.5 多态
8.6 OO 设计原则
8.7 综合练习
第9章 泛型
9.1 学生泛型概念
9.2 基础回顾
回顾是因为之前,我们已经学习并使用过诸如:函数模板(包括成员函数模板)、类模板等技巧;现在站一个更高的层面重新看待它们。
9.3 模板实例化
8.4 泛型应用实例
9.5 泛型特化
“泛” 和 “特” 是一对反义