4006-998-758
3000+课程任你选择
C++ 实战培训
研发学院 模块化管理 C++ C++ Python 开课时间: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、为什么要⽤ C++ Python 和 C++ ⽐较 

语法 

对象的⽣命周期

性能 

2、Hello 

(1)基本语法和概念 

函数

类型和变量

分⽀语句

常量

数组、指针和引⽤ 

(2)编译和链接

3、⽤户⾃定义类型

结构 

类 

联合 

枚举

4、 模块化管理 

翻译单元和编译过程

名空间 

CMake ⼊门 

5、C++ 的资源管理

RAII

C++ 各种类型对象的⽣命期 

6、⾯向对象开发

类和封装

⾮静态特殊成员函数 

具体类型 

抽象类型:虚函数和继承体系

静态绑定和动态绑定

 7、三法则

 8、C++ 标准库概览

 9、string、string_view(C++17)和正则表达式(C++11)

10、tuple(C++11) 

11、输⼊输出流 

12、标准容器

string 

array 

       序列容器 

关联容器 

⽆序关联容器(C++11)

容器适配器 

13、迭代器 

概念 

常⽤迭代器 

基于范围的循环(C++11)

        对⽂件内容的迭代器

14、标准算法 

15、智能指针(C++11)

唯⼀拥有权

共享引⽤计数 

16、时间(C++11)

17、模板基础 

模板 

实例化 

特化 

静态多态和动态多态


二、提⾼篇 

1、⼯具 

GCC

Clang

Clang-Format

Clang-Tidy

Clangd

CMake 

Valgrind 

Godbolt

CppInsights

2、C++11/14/17 的易⽤性改进

⾃动类型推断 

列表初始化和统⼀初始化 

类数据成员的默认初始化

⾃定义字⾯量

语⾔的字⾯量改进

静态断⾔ 

override 和 final 说明符

3、五法则和零法则 

4、异常和错误处理 

不⽤异常的错误处理

异常的意义

为什么 Google(或其他某某公司/项⽬)不使⽤异常 

异常的问题和好处

 5、对象返回和返回值优化

6、⾼级模板技巧 

编译期计算

编译期类型推导

SFINAE 

constexpr(C++11/14/17)

7、函数式编程

函数对象

Lambda 表达式

函数式编程简介

应⽤可变模板和 tuple 的编译期技巧

8、并发编程(C++11)

mutex 

thread

future 和 promise 

内存序问题和原⼦量 

并发带来的接⼝影响

9、返回值的分⽀(C++17)

optional 

variant 

expected 

10、瑞⼠军⼑ boost


课程收益

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


课程准备

每个学员应当准备⼀台笔记本电脑,上⾯可以访问开发环境。具体可以是: 

本机运⾏ Linux 或 macOS

远程 SSH 到 Linux 服务器

Cygwin 模拟环境

Docker 环境

Windows Subsystem for Linux

不管哪种环境,都需要安装 GCC(建议⾄少版本 7.3)、Make 和 CMake。


返回上一级