现代c++编程c++11/14/17/20:Preface

翻github,发现c++长的和我学的太不一样了。课堂学的还是c++98,但是现在已经20年了。

链接

Introduction

c++的用户组是相当大的。从c++ 98的出现到c++ 11的正式定稿,它已经积累了十多年的时间。c++ 14/17是对c++ 11的重要补充和优化,而c++ 20将该语言带到了现代化的大门。所有这些新标准的扩展特性都提供给了c++语言。焕发出新的活力。那些仍在使用传统c++(本书将c++ 98及其以前的c++标准称为传统c++)的c++程序员甚至可能会惊讶于这样一个事实:在阅读现代c++代码时,他们使用的不是同一种语言。

现代c++ (本书指的是c++ 11/14/17/20)引入了许多传统的特性这使得整个c++变成了现代化的语言。现代c++不仅增强了c++语言本身的可用性,而且对auto关键字语义的修改使我们在操作极其复杂的模板类型时更有信心。与此同时,对语言运行时进行了大量增强。Lambda表达式的出现使得c++具有了“匿名函数”的“闭包”特性,这几乎在现代编程语言(如Python/Swift/…)中都有。它已经变得很常见,右值引用的出现解决了c++长期以来一直被批评的临时对象效率问题。

c++ 17是c++社区在过去三年中一直在推动的方向。指出了现代c++编程的一个重要发展方向。虽然它不像c++ 11那么多,但它包含大量小巧而漂亮的语言和特性(比如结构化绑定),这些特性的出现再次修正了我们在c++中的编程范型。

现代c++还在它自己的标准库中添加了许多工具和方法,比如语言本身级别的std::thread,它支持并发编程,不再依赖于不同平台上的底层系统。API实现了语言层次上的跨平台支持;regex提供了完整的正则表达式支持等等。c++ 98已经被证明是一种非常成功的范例,现代c++的出现进一步促进了这种范例,使c++成为一种更好的系统编程和库开发语言。Concepts提供了模板参数编译时的验证,进一步增强了语言的可用性。

综上所述,作为c++的倡导者和实践者,我们始终保持开放的心态接受新事物,我们可以更快地推动c++的发展,让这个古老而又新颖的语言更加生机勃勃。

Targets

  • 这本书假设读者已经熟悉传统的c++(比如c++ 98或更早的版本),至少他们在阅读传统的c++代码时没有任何困难。
  • 这本书在一定程度上介绍了现代c++的黑暗魔法。但是,这些魔法是非常有限的,它们不适合想要学习高级c++的读者。这本书的目的是为现代c++提供一个快速的入门。当然,高级读者也可以使用这本书来回顾和检查自己对现代c++的了解。

Purpose

这本书声称是仓促写成的。它的目的是提供关于现代c++(2020年代之前)的相关特性的全面介绍。读者可以根据下面的内容表选择感兴趣的内容来学习和快速熟悉您想要学习的新特性。读者应该知道,所有这些特性都不是必需的。当你真正需要它的时候,它应该被删除。

同时,这本书没有只介绍语法,而是尽可能简单地介绍了它的技术要求的历史背景,这对理解为什么会出现这些特性提供了很大帮助。

此外,作者还希望读者能够在他们的新项目中直接使用现代c++,并在阅读完这本书后逐渐将他们的旧项目迁移到现代c++中。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
学习并掌握C++2.0(11+14+17+20)的新特性,学习线程及线程池的应用 ---------------------------------------------------给小白学员的3年学习路径及计划技术方面分三块:1.纯开发技术方向2.音视频流媒体专业方向3.项目实战---------------------------------------------------1.纯开发技术方向(1) C++必须要过硬(至少学会10本经典好书)(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用(3) 框架与工具(Qt、MFC):必须精通其中一种。(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)(6) 最好学习点Java+Html+javascript等WEB技术。2.音视频流媒体专业方向(1) 音视频流媒体基础理论:   必须认真学会,否则看代码就是看天书(2) 编解码方向:精通h.264,h.265(hevc), 包括理论和各个开源库(ffmpeg,libx264,libx265,...)。(3) 直播方向:  精通各种直播协议(rtsp,rtmp,hls,http-flv,...), 钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)(4) 视频监控:  理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...) 3.项目实战(1) Qt项目:  至少要亲手练习10个实战项目(网络服务器、多线程、数据库、图像处理、多人聊天、等等)(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,包括视频服务器、后台管理系统、前端播放器(多端)---------------------------------------------------  第1章 C++11新特性 41). nullptr关键字与新语法 42). auto和decltype类型推导 6 auto讲解 6 auto示例 7 decltype 83). for区间迭代 94). 初始化列表 105). 模板增强 11外部模板 11类型别名模板 12默认模板参数 126). 构造函数 13委托构造 13继承构造 147). Lambda 表达式 158). 新增容器 20std::array 20std::forward_list 21无序容器 22元组 std::tuple 239). 正则表达式 2610). 语言级线程支持 28多线程库简介 2811). 右值引用和move语义 31右值引用和move语义 32转移左值 3412). constexpr 35第2章 C++14新特性 36Lambda 函数 36类型推导 37返回值类型推导(Return type deduction) 37泛型lambda 39[[弃用的]]  [[deprecated]]属性 40二进制数字和数字分隔符 41第3章 C++17新特性 42安装GCC10.2 42安装msys2-x86_64-20200720 42更新镜像 42更新软件库 43安装 MinGW64 等必要的软件 43环境变量Path 43编译命令 43constexpr 44typename 45折叠表达式 47结构化绑定 48条件分支语句初始化 49聚合初始化 50嵌套命名空间 52lambda表达式捕获*this的值 53改写/继承构造函数 54用auto作为非类型模板参数 55__has_include 56fallthrough 57nodiscard 57maybe_unused 58第4章 C++20新特性 59编译命令 59concept 59typename 60explicit 61constinit 62位域变量的默认成员初始化 62指定初始化 63基于范围的for循环初始化 64放宽基于范围的for循环,新增自定义范围方法 65嵌套内联命名空间 66允许用圆括弧的值进行聚合初始化 67unicode字符串字面量 68允许转换成未知边界的数组 68likely和unlikely 69第5章 C++2.0(11/14/17/20)总结与分析 705.1 C语言与C++ 715.2 语言可用性的强化 725.2.1 常量 725.2.2 变量及其初始化 735.2.3 类型推导 745.2.4 控制流 765.2.5 模板 775.2.6 面向对象 815.3 语言运行期的强化 835.3.1 Lambda 表达式 835.3.2 右值引用 865.4 容器 885.4.1 线性容器 885.4.2 无序容器 895.4.3 元组 895.5 智能指针与内存管理 905.5.1 RAII 与引用计数 905.5.2 std::shared_ptr 905.5.3 std::unique_ptr 915.5.4 std::weak_ptr 91第6章 C++2.0多线程原理与实战 93什么是并发 93并发的方式 93为什么使用并发 95线程简介 96创建线程的三种方式 971. 通过函数 972.通过类对象创建线程 993.通过lambda表达式创建线程 101thread线程的使用 101互斥量与临界区 105期物Future 111条件变量 112原子操作 114内存模型 118第7章 C++2.0线程池原理与实战 120线程与线程池的基本原理 1201)、线程 1202)、线程的生命周期 1213)、什么是单线程和多线程 1214)、线程池 1225)、四种常见的线程池 123线程池的架构与流程 123线程池代码实战 125    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值