罗剑锋的 C++ 实战笔记
20 年老兵心法,让 C++ 不再难学
罗剑锋  前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者
专栏
已完结·共 32 讲
|
3.6w 人已学
|
收藏
泛型编程是自 STL(标准模板库)纳入到 C++ 标准以后才逐渐流行起来的新范式,核心思想是“一切皆为类型”,或者说是“参数化类型”“类型擦除”,使用模板而不是继承的方式来复用代码,所以运行效率更高,代码也更简洁。
来自:01 | 重新认识C++:生命周期和编程范式
9 人划过
你要特别小心对象的析构函数,不要有非常复杂、严重阻塞的操作。一旦 shared_ptr 在某个不确定时间点析构释放资源,就会阻塞整个进程或者线程,“整个世界都会静止不动”(也许用过 Go 的同学会深有体会)。这也是我以前遇到的实际案例,排查起来费了很多功夫,真的是“血泪教训”。
来自:08 | smart_ptr:智能指针到底“智能”在哪里?
7 人划过
宏的展开、替换发生在预处理阶段,不涉及函数调用、参数传递、指针寻址,没有任何运行期的效率损失,所以对于一些调用频繁的小代码片段来说,用宏来封装的效果比 inline 关键字要更好,因为它真的是源码级别的无条件内联。
来自:03 | 预处理阶段能做什么:宏定义和条件编译
7 人划过
函数的执行过程是 const 的,不会修改对象的状态(即成员变量),也就是说,成员函数是一个“只读操作”。
来自:07 | const/volatile/mutable:常量/变量究竟是怎么回事?
7 人划过
C++ 里还有一种方法(C++ 11 之后),就是直接使用函数内部的 static 静态变量。C++ 语言会保证静态变量的初始化是线程安全的,绝对不会有线程冲突。
来自:20 | 设计模式(下):C++是怎么应用设计模式的?
6 人划过
在类成员变量初始化的时候(第 5 讲),目前的 C++ 标准不允许使用 auto 推导类型
来自:06 | auto/decltype:为什么要有自动类型推导?
5 人划过
for 循环体里会做很多事情,会由 if-else、break、continue 等语句组成很复杂的逻辑。
来自:13 | 五花八门的算法:不要再手写for循环了
5 人划过
免去了构造后再拷贝、转移的成本
来自:12 | 三分天下的容器:恰当选择,事半功倍
4 人划过
总的来说,要写好注释,你要时刻“换位思考”,设身处地去想别人怎么看你的代码,这样的话,上面的那些细则也就不难实施了。
来自:02 | 编码阶段能做什么:秀出好的code style
3 人划过
上层要避免依赖下层的实现细节,下层要反过来依赖上层的抽象定义
来自:19 | 设计模式(上):C++与设计模式有啥关系?
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容
免费试读
讲师

罗剑锋

前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者

罗剑锋,网名“Chrono”,前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者,也是极客时间《透视 HTTP 协议》专栏的作者。他熟悉各种网络应用协议,专注于 C/C++、Linux、高性能编程等领域,著有《C++11/14 高级编程》《Nginx 完...查看更多
编辑推荐
讲师的其他课程
透视 HTTP 协议
罗剑锋(Chrono)
前奇虎 360 技术专家,Nginx/OpenResty 开源项目贡献者

48讲 | 63954 人已学习

¥59¥129
Kubernetes 入门实战课
罗剑锋
Kong 高级工程师,Nginx/OpenResty 开源项目贡献者

41讲 | 19544 人已学习

¥59¥129
包含这门课的学习路径

C++工程师

7门课程 51.5w人学习
看过的人还看了
数据结构与算法之美
王争
前 Google 工程师

81讲 | 283792 人已学习

¥68¥199
现代 C++ 编程实战
吴咏炜
前 Intel 资深软件架构师

51讲 | 34206 人已学习

¥59¥129
左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家

119讲 | 180992 人已学习

¥98¥399
设计模式之美
王争
前 Google 工程师,《数据结构与算法之美》专栏作者

113讲 | 123456 人已学习

¥98¥299
MySQL 实战 45 讲
林晓斌
网名丁奇,前腾讯云数据库负责人

49讲 | 224925 人已学习

¥68¥199
现代 C++20 实战高手课
卢誉声
Autodesk 首席工程师

29讲 | 3787 人已学习

¥59¥99