课程简介
Introduction
自 C++11 以来,C++ 以每三年一版的频度发布着新的语言标准,C++ 11/14/17/20 每一版都在基本保留向后兼容性的同时提供着改进和新功能。C++ 11/14/17/20重塑了C++语言,被统称为“现代C++“。本课程围绕这些现代 C++ 的改进、功能和相关编程实践,讲解现代 C++语言重要的新特性,帮助学员深入掌握现代C++新特性的意义(Why)、具体功能(What)及如何应用在实践中应用 这些新特性(How)。
课程简介
Introduction
自 C++11 以来,C++ 以每三年一版的频度发布着新的语言标准,C++ 11/14/17/20 每一版都在基本保留向后兼容性的同时提供着改进和新功能。C++ 11/14/17/20重塑了C++语言,被统称为“现代C++“。本课程围绕这些现代 C++ 的改进、功能和相关编程实践,讲解现代 C++语言重要的新特性,帮助学员深入掌握现代C++新特性的意义(Why)、具体功能(What)及如何应用在实践中应用 这些新特性(How)。
培训讲师
Instructor
吴咏炜
Boolan首席咨询师
国内知名 C++专家,曾任英特尔亚太研发中心资深系统架构师,近 30 年 C/C++系统级软件开发和架构经验。专注于 C/C++ 语言(包括 C++98/C++11/14/17/20)、软件架构、性能优化、设计模式和代码重用。对于精炼、易于维护的代码和架构有着不懈的追求,对开源平台(GNU/Linux)有深入的理解。长期担任资深技术教练,涉及 C++、软件架构、安全软件开发、开源软件等多方面。
培训收获
Benefits
掌握现代C++语言特性
Master the new features of modern C++
领悟C++抽象表达精髓
Get the insight of C++ abstraction mechanism
实践C++开发惯用模式
Practice the idioms & patterns of C++
落地专家经验解决实际问题
Learn the experiences from front-line guru
培训大纲
Syllabus
课程简介
-C++的特点与演化
-C++ 的版本简介:98,03,11,14,17,20
-如何学习 C++
资源管理和对象的基本规则
-堆与栈
-RAII
-对象的拷贝和移动
-对象的特殊成员函数
-三法则
移动语义与右值引用
-值类别
-生命周期和表达式类型
-移动的实现和意义
-移动和 noexcept
-对象的生命期
-转发引用
-五法则
智能指针
-auto_ptr 和 unique_ptr
-shared_ptr 和 weak_ptr
-make_unique 和 make_shared;与聚合初始化的兼容性问题
容器和类容器
-string
-序列容器
-关联容器
-无序关联容器
-容器适配器
迭代器和循环
-迭代器种类
-常用迭代器
-范围 for 循环
对象返回和异常
-返回值优化
-异常的意义
-异常的问题
-不用异常的错误处理
语言易用性改进
-自动类型推断
-模板参数推导
-default和delete成员函数
-列表初始化和统一初始化
-类数据成员的默认初始化
-用户定义字面量
-二进制字面量
-数字分隔符
-nullptr
-静态断言
-if/switch 中的变量初始化
-override 和 final 说明符
-重要标准属性
其他重要新特性
-using 类型别名
-定宽整数类型
-强类型 enum
-std::byte
-UTF 字符类型
-tuple、tie 和结构化绑定
-时间库
-随机数库
-正则表达式库
any、optional、variant 和错误处理
-any
-optional
-variant
-标准库的错误处理
-Boost.Outcome
视图
-string_view
-span
-Ranges 里的视图
模板基础
-模板
-实例化
-特化
-静态多态和动态多态
-泛型算法
函数式编程
-函数对象
-Lambda 表达式
-function 模板
-函数式编程简介
编译期计算
-利用模板参数进行计算
-编译期类型推导
-SFINAE
-constexpr 变量和 constexpr 函数
-if constexpr
-变参模板
-折叠表达式
-应用可变模板和 tuple 的编译期技巧
并发编程
-进程和线程
-thread
-mutex 和 shared_mutex
-future
-内存序问题和原子量
-并发带来的接口影响
概念(Concepts)
-简史
-基础的概念
-概念和 SFINAE
范围(Ranges)
-范围带来的表达性改进
-范围和概念
-范围和优化
-范围的问题
C++20 及未来
-C++20 其他特性概览
-C++ 的未来展望
适用人群
Audiences
开发工程师、高级工程师、软件主管、研发经理、架构师
培训地点
Venue
预约内训
Training