You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

112 lines
6.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 罗剑锋的C++实战笔记
## 特别推荐
[![](https://static001.geekbang.org/resource/image/41/y9/418c7aff321c71bd26c0bf154f2b3yy9.jpg)](http://time.geekbang.org/hybrid/pvip?utm_term=zeusN1QSP&utm_source=geektime&utm_medium=geektime&utm_content=picture)
## 你将获得
* C++11/14 核心特性的代码实战
* 标准库的 4 大核心工具详解
* C++ 常见陷阱及其解决方案
* 手把手带你开发一个服务端应用
## 讲师介绍
罗剑锋网名“Chrono”前奇虎 360 技术专家Nginx/OpenResty 开源项目贡献者,也是极客时间[《透视HTTP协议》](https://time.geekbang.org/column/intro/100029001)专栏的作者。他熟悉各种网络应用协议,专注于 C/C++、Linux、高性能编程等领域著有《C++11/14 高级编程》《Nginx 完全开发指南》《Boost 程序库完全开发指南》《OpenResty 完全开发指南》等畅销书。
## 课程介绍
我们知道C++是编程语言中的“万能选手”。它不仅功能强大、非常灵活而且运行处理速度也很快适用场景非常广泛。很多新的编程语言都从它身上获得了灵感。无论你是否使用C++开发程序,在学习它的时候,都能够有很多收获。
但是说起C++,很多人还会有另一个反应:“出了名的难学难用。”的确如此。因为它实在是太复杂了,有太多的特性和细节。
随着标准版本的演进C++里包含的东西也越来越多。不断膨胀的核心语言加上庞大的标准库让学习、使用C++的门槛无形中提高了很多,不仅“新手”学起来很难,就连“老手”也觉得用好它并不是一件容易的事情。毕竟,我们总是不可避免地会遇见一些难题:
* C++太庞大复杂了,该用哪些特性?
* 标准库里的东西这么多,核心的工具有哪些?
* 开源的C++库很多,但良莠不齐,哪些库最好用呢?
* ……
基于以上的这些难题罗剑锋老师根据自己写C++代码的20多年的实践经验精选出了C++11/14最好用、最实用的特性不讲语法细节和内部实现原理直接上代码实战让你能轻松地看懂、学会。
另外,在讲解核心特性和工具的过程中,他也会带领你绕开语法细节、资源管理、库/工具等方面的陷阱帮助你高效地写出更安全、更优雅的代码真正解决C++难学、难调试、难优化的问题。
# 常见问题
**这个课程和《现代C++实战30讲》有什么区别**
**答:**
《现代C++实战30讲》针对的是C++17/GCC7有时候还会用到C++20/GCC 8侧重深入、透彻地讲解语言特性背后的原理适合想要学习最新特性、想要掌握C++高级技能的工程师。
本课程基于国内目前的开发现状从C++11/14和较早版本的GCC4.8/5.4入手精选出最常用、最好用的C++特性结合代码实战告诉你该怎么用、不该怎么用更适合对C++有所了解1~5年但又对其庞大、复杂的特性不知如何取舍的软件工程师。同时想要借鉴高手实战经验的优秀工程师同样也能从本课程中获益。
**平时很少用C++,学习这个课程可以有什么收获吗?**
**答:**
1. 可以学习和借鉴高手在编码规范、面向对象、设计模式、设计原则方面的思考和实践经验。
2. 开拓编程思路。C++强调“性能至上”你可以了解到在面对同样的问题时C++是如何考虑并处理的。
3. 更好地理解计算机系统的应用机制。C/C++是现代操作系统和许多底层开发框架的核心开发语言了解C/C++的基本知识,就能够阅读操作系统或框架的源码,为上层应用服务。
4. 提升混合编程的能力。用多种语言搭建混合系统是当前的一种流行趋势。使用少量C++代码改写系统中的关键组件,能够大幅度提升整体性能,做到“小投入,大产出”。
# 课程模块设计
课程主体分为5个模块。
**概论:**从程序的生命周期和编程范式这两个独特的角度来审视C++帮你看清楚C++复杂的本质透彻理解C++程序的运行机制和面向对象编程思想。
**语言特性**精选C++中的自动类型推导、智能指针、lambda表达式等几个重要特性帮你掌握惯用法消灭代码里的隐患写出清晰、易读、安全的代码。
**标准库**:详细介绍最核心的四个部分,即字符串、容器、算法和并发,让你用好这个最基本的库,学会泛型编程,提高程序的运行效率。
**技能进阶**介绍C++标准之外的一些第三方工具,带你一起实现序列化、网络通信和性能分析等功能,解决实际开发中遇到的常见问题。
**总结**结合C++来讲设计模式并手把手带你开发一个C++服务端程序帮你深入理解在项目中如何更高效地使用C++写出更安全的代码。
除此之外,还特别设计了一个“**轻松话题**”模块和你聊些C++之外的东西。这些话题涵盖的范围比较广,包括经典的学习资料、提高工作效率的工具等,让你在掌握核心硬技能的同时,还能拓宽知识面。
## 课程目录
![](https://static001.geekbang.org/resource/image/1f/98/1f9de23ff1146623a643428cf9cba098.jpg)
## 适合人群
1. 知道C/C++的基本语法规则如指针、类、继承等对泛型有简单的认识但又对C++的庞大复杂感到不知所措的C/C++软件工程师。
2. 不以C++为主要工作语言但想要借助C++开拓思路、实现混合编程的工程师。
## 特别放送
#### 免费领取福利
[![](https://static001.geekbang.org/resource/image/16/13/1664800067c250a67yy94c57d0e76c13.jpg?wh=1035x360)](https://time.geekbang.org/article/428647)
#### 限时活动推荐
[![](https://static001.geekbang.org/resource/image/67/a0/6720f5d50b4b38abbf867facdef728a0.png?wh=1035x360)](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?dc_ps=2913145716543073286.200001)
## 订阅须知
1. 订阅成功后推荐通过“极客时间”App端、Web端学习。
2. 本专栏为虚拟商品,交付形式为图文+音频,一经订阅,概不退款。
3. 订阅后分享海报,每邀一位好友订阅有现金返现。
4. 戳此[先充值再购课更划算](https://shop18793264.m.youzan.com/wscgoods/detail/2fmoej9krasag5p?scan=1&activity=none&from=kdt&qr=directgoods_1541158976&shopAutoEnter=1),还有最新课表、超值赠品福利。
5. 企业采购推荐使用“[极客时间企业版](https://b.geekbang.org/?utm_source=geektime&utm_medium=columnintro&utm_campaign=newregister&gk_source=2021020901_gkcolumnintro_newregister)”便捷安排员工学习计划,掌握团队学习仪表盘。
6. 戳此[申请学生认证](https://promo.geekbang.org/activity/student-certificate?utm_source=geektime&utm_medium=caidanlan1)订阅课程享受原价5折优惠。