第一部分:环境和准备(1小时)
LINUX基础,发行版,WSL,GCC概要,GCC基本用法,常用开关,GLIBC,动手试验,集成开发环境,VSCODE,VS for Linux C++
实战训练:在GDB下认识和理解GLIBC
第二部分:C++11背景(1小时)
C++简史,C++的优势和不足,ISO C++,C++98,C++03,C++11,C++11的目标,“看起来像新的语言”,C++14概要,C++17概要,VC11,VC13,VC15,VC17和VC19,Clang,编译器技术的革新
实战训练:切换GCC版本和认识C++不同版本的差异
第三部分:STL迭代器和自动类型(1.5小时)
问题,模板容器,vector, list, 模板容器的数据布局,stl迭代器,std::begin和std::end,用作循环变量,range-for,用作迭代器,decltype ,auto的其它用法,调试符号,在GDB中观察STL容器的问题和解决方法
实战训练:STL基础编程
实战训练:STL高级编程
第四部分:匿名函数(1.5小时)
问题,回调,排序,future,匿名函数的写法,值捕获,引用捕获,隐式捕获,表达式捕获,泛型,匿名函数的更多使用场景,std::function,CppRest案例实践
实战训练:在GDB中理解匿名函数
第四部分:异常处理和noexcept(1.5小时)
结构化异常处理(SEH),C++异常处理,throw关键字,栈展开,对象展开,noexcept的用途,通过编译清单来理解noexcept的价值,案例代码实践
实战训练:在GDB中认识异常处理器
第五部分:智能指针(1.5小时)
问题,ATL和传统解决方法,make_shared,make_unique,std::shared_ptr,,std::unique_ptr,std::weak_ptr传递对象,对象复制,传递引用,案例代码实践
实战训练:使用智能指针
实战训练:在GDB中理解智能指针
第六部分:多线程编程和线程本地存储 (1.5 小时)
多线程编程的跨平台问题问题,C++11的线程库,可变参数,TLS,TLS的传统方法,Windows API,Linux上的实现,thread_local,对操作系统的依赖,编译器实现,std::thread,std::mutex,std::unique_lock,std::future,std::packaged_task,std::condition_variable,案例代码实践
实战训练:使用C++标准库编写多线程程序
实战训练:使用GDB调试多线程死锁和理解同步对象
第七部分:内存对齐(1小时)
内存拓扑,CPU的cache结构,cache line,内存对齐的重要性,数据结构对齐,动态分配对齐,std::aligned_alloc,DPDK代码分析和实践
实战训练:编写cache友好的程序
实战训练:使用perf观察cache miss
第八部分:标准库增强(1.5小时)
标准函数库,OO类库, STL算法,STL函数对象,STL分配器,std::regex,std::regex_match,std::match_results,案例代码实践
实战训练:使用正则表达式编程
课程形式
讲师引领的动手试验
课程对象
已经有C++语言编程基础的软件工程师,或者相关项目的测试工程师、项目带头人和技术经理