# 罗剑锋的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和较早版本的GCC(4.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折优惠。