- 迈向现代 C++
- 类型推导与控制流
- 折 叠表达式计算均值
- 结构化绑定与 Lambda 函数
- 智能指针与内存管理
- 使用正则表达式匹配邮箱
- 实现简单线程池
- 常量与变量及其初始化
- 模板与面向对象
- 语言运行期的强化
- 容器
- 正则表达式
- 并行与并发
- 其他特性
C++ 是一个用户群体相当大的语言。从 C++98 的出现到 C++11 的正式定稿经历了长达十年多之久的积累。C++14/17 则是作为对 C++11 的重要补充和优化,C++20 则将这门语言领进了现代化的大门,所有这些新标准中扩充的特性,给 C++ 这门语言注入了新的活力。本次课程将对二十一世纪二十年代之前产生 C++ 的相关特性做了相对全面的介绍。
C++ 是一个用户群体相当大的语言。从 C++98 的出现到 C++11 的正式定稿经历了长达十年多之久的积累。C++14/17 则是作为对 C++11 的重要补充和优化,C++20 则将这门语言领进了现代化的大门,所有这些新标准中扩充的特性,给 C++ 这门语言注入了新的活力。
那些还在坚持使用传统 C++(本书把 C++98 及其之前的 C++ 特性均称之为传统 C++)而未接触过现代 C++ 的 C++ 程序员在见到诸如 Lambda 表达式这类全新特性时,甚至会流露出『学的不是同一门语言』的惊叹之情。
现代 C++ (本书中均指 C++11/14/17/20) 为传统 C++ 注入的大量特性使得整个 C++ 变得更加像一门现代化的语言。现代 C++ 不仅仅增强了 C++ 语言自身的可用性,auto
关键字语义的修改使得我们更加有信心来操控极度复杂的模板类型。同时还对语言运行期进行了大量的强化,Lambda 表达式的出现让 C++ 具有了『匿名函数』的『闭包』特性,而这一特性几乎在现代的编程语言(诸如 Python/Swift/... )中已经司空见惯,右值引用的出现解决了 C++ 长期以来被人诟病的临时对象效率问题等等。
C++17 则是近三年依赖 C++ 社区一致推进的方向,也指出了现代 C++编程的一个重要发展方向。尽管它的出现并不如 C++11 的分量之重,但它包含了大量小而美的语言与特性(例如结构化绑定),这些特性的出现再一次修正了我们在 C++ 中的编程范式。
现代 C++ 还为自身的标准库增加了非常多的工具和方法,诸如在语言自身标准的层面上制定了 std::thread
,从而支持了并发编程,在不同平台上不再依赖于系统底层的 API,实现了语言层面的跨平台支持;std::regex
提供了完整的正则表达式支持等等。C++98 已经被实践证明了是一种非常成功的『范型』,而现代 C++ 的出现,则进一步推动这种范型,让 C++ 成为系统程序设计和库开发更好的语言。Concept 提供了对模板参数编译期的检查,进一步增强了语言整体的可用性。
总而言之,我们作为 C++ 的拥护与实践者,始终保持接纳新事物的开放心态,才能更快的推进 C++ 的发展,使得这门古老而又新颖的语言更加充满活力。
欧龙崎 (欧长坤) 共发布过 14 门课程
查看老师的所有课程 >
学习
本次实验,我们验证了 C++11 以来,在类型推导和控制流方面的新特性,主要包括 auto 和 decltype 关键字,尾返回类型推导,if 和 constexpr 关键字搭配使用的好处以及区间 for 迭代。
本次实验,我们针对 C++11 以来,在常量与变量及其初始化方面的重要改变做出了验证。主要有 nullptr 、 constexpr 的引入和允许在 if/switch 进行临时变量的声明,提供了初始化列表进行初始化以及结构化绑定的方法。
最后一个挑战的参考代码我觉得还行,希望以后比较难的挑战最后给出的参考答案就都是一个非常详细的参考思路配上一个GitHub地址,然后大家在实验楼的评论区里晒自己GitHub地址里自己做出来的答案
第一节比较轻松
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容
学完了该章节,未填写评价内容