4006-998-758
3000+课程任你选择
现代 C++ 实践培训
研发学院 优化 方法 C++11 开课时间:2021-07-03
吴咏炜

1995年毕业于复旦大学,近 30 年 C/C++系统级软件开发和架构经验。专注于 C/C++ 语言(包括 C++98/C++11/14/17/20)、软件架构、性能优化、设计模式和代码重用。对于精炼、易于维护的代码和架构有着不懈的追求,对开源平台(GNU/Linux)有深入的理解。长期担任资深技术教练,涉及 C++、软件架构、安全软件开发、开源软件等多方面。目前担任华为资深技术教练。

历届C++大会发布了精彩的演讲,曾参与翻译《编程大师访谈录》 ,并且在国内外的技术专栏有大量文章发布如下:

Time zones in Python (2019-09-01)

阅读的权利 (a Chinese translation of The Right to Read) (2019-04-01)

My opinions regarding the top five TIOBE languages (2018-12-07)

25x performance boost in two hours (2018-11-22)

Pipenv and relocatable virtual environments (2018-11-04)

A VPN issue with MTU (2018-11-02)

On the use of she as a generic pronoun (2017-10-21)

A journey of purely static linking (2017-10-02)

Another Microsoft Unicode I/O problem (2017-09-29)

C/C++ performance, mmap, and string_view (2017-09-14)

Annoying Vim behaviour on Ubuntu 16.04 (2017-02-18)

Performance of my line readers (2016-11-12)

Upgrading to Boost 1.61 in MacPorts (2016-08-18)

Python yield and C++ coroutines (2016-08-16)

A small experiment of system scripting in Python (2016-07-24)

Choosing a multi-precision library for C++—a critique (2016-06-04)

MSVCRT.DLL console I/O bug (2016-05-27)

Generic lambdas and the compose function (2015-01-03)

Type deduction and my reference mistakes (2014-12-29)

Installing Clang 3.5 for Windows (2014-12-24)

A complaint of ODF’s Asian language support (2014-12-18)

Y combinator and C++ (2014-12-14)

Study notes: functional programming with C++ (2014-12-7)

Specify LANG in a UTF-8 web page! (2006-3-28)

Vim 实用技术:技巧,插件,定制 (Practical Vim); PDF version available (2006-3-22)

Design and implementation of a static memory pool (2005-1-11)

A cross-platform memory leak detector (2004-11-28)

Stdcall and DLL tools of MSVC and MinGW (2002-8-20)

Issues about time routines on Win32 and *NIX (2002-2-26)

A fast string implementation for STL map (2002-2-24)

MSVC and MinGW DLL interlinking FAQ (2001-12-21)

Multibyte functions in Microsoft C run-time (2001-12-16)

ASP 应用程序开发规范 (Active Server Pages programming guide) (2001-8-12)


查看老师详情
课程内容

1.课程简介(0.5h)

C++的特点与演化

C++ 的版本简介:98,03,11,14,17,20

如何学习 C++


2.资源管理和对象的基本规则(0.5h)

堆与栈

RAII

对象的拷贝和移动

对象的特殊成员函数

三法则


3.移动语义与右值引用(1h)

值类别

生命周期和表达式类型

移动的实现和意义

移动和 noexcept

对象的生命期

转发引用

五法则


4.智能指针(1h)

auto_ptr 和 unique_ptr

shared_ptr 和 weak_ptr

make_unique 和 make_shared;与聚合初始化的兼容性问题


5.容器和类容器(1h)

string

序列容器

关联容器

无序关联容器

容器适配器

array


6.迭代器和循环(0.75h)

迭代器种类

常用迭代器

范围 for 循环

常见问题和陷阱


7.对象返回和错误处理(0.75h)

返回值优化

异常的意义

异常的问题

不用异常的错误处理

 [[nodiscard]](C++17)


8.语言易用性改进(1.5h)

自动类型推断

列表初始化和统一初始化

类数据成员的默认初始化

用户定义字面量

二进制字面量和数字分隔符

nullptr

静态断言

if/switch 中的变量初始化(C++17)

override 和 final 说明符

推导指引(C++17)


9.其他重要新特性(2h)

using 类型别名

强类型 enum

std::byte(C++17)

定宽整数类型

UTF-16、UTF-32(C++11)和 UTF-8 支持(C++20)

tuple、tie(C++11)和结构化绑定(C++17)

any、optional 和 variant(C++17)

时间库

随机数库

正则表达式库


10. 视图(0.5h)

string_view(C++17)

span(GSL 和 C++20)

Ranges 里的视图(C++20)


11. 模板基础(0.75h)

模板

实例化

特化

静态多态和动态多态


12. 函数式编程与 Lambda 表达式(0.75h)

函数对象

Lambda 表达式

泛型 lambda 表达式

function 模板

函数式编程简介


13. 编译期计算(1h)

编译期计算

编译期类型推导

SFINAE

constexpr 变量

inline constexpr 变量(C++17)

constexpr 函数

if constexpr(C++17)

变参模板

折叠表达式(C++17)

应用可变模板和 tuple 的编译期技巧(C++17)


14.  并发编程(1h)

mutex 和 lock_guard

shared_mutex、unique_lock 和 shared_lock(C++17)

thread

future 和 promise

内存序问题和原子量

并发带来的接口影响


15.  未来(0.5h)

C++20 概览

C++ 的未来展望


课程收益

通过本次课程,你将清楚地知道某个新功能为什么存在,应该在什么场景下使用,以及这样用的好处;你 将能够熟练掌握现代 C++ 语言的特性,并领会到 C++ 抽象表达的精髓;你将能够实践 C++ 开发的惯 用模式,并通过应用这些模式,在实践中征服复杂性,写出更简洁、易读、可维护的代码。


返回上一级