C++11/14 语言与库架构

课程介绍:

C++11(C++2.0) 是继C++98(C++1.0) 之后的第二个国际标准规格;自1.0进化至2.0,添加了很多新东西。C++14则是对C++11的若干小改善。C++2.0 在语言和标准库两方面都带来了很多新奇。荦荦大者有语言层面的 Variadic Templates, Lvalue reference..., 以及标准库层面的forward_list, std::array…,这些全都是本课程深入讲解的对象。本课程让学员对新特性有全面认识,并深入其中最重要的若干主题。

培训时长:2天(12学时)

讲师介绍:

侯捷 台湾著名C++专家

侯捷是两岸著名技术教育者,计算机图书作者、译者、书评人。著有《深入浅出MFC》《多型与虚拟》《STL源码剖析》《无责任书评》三卷,译有众多脍炙人口的高阶技术书籍,包括Meyers的“Effective C++”系列。侯捷还兼任教职于元智大学(台湾)、同济大学(大陆)、南京大学(大陆)。侯捷老师的著作、讲座影响大陆整整一代C++程序员。

 

课程方式:

传统的面对面授课方式。

 

课程大纲:

 

第一讲:C++11/14 (C++2.0) 语言新特性

1-1.演进、开发环境与网络资源

1-2.Variadic Templates (这是C++11最重要的新特性,全面改变了标准库的写法。)

1-3.Spaces in Template Expressionnullptr and std::nullptr_tAutomatic Type Deduction with auto(上述三者之中最具实用价值的是 auto,能够为编写代码带来极大方便。)

1-4.Unifrom Initialization (初始化的作法终于有了统一。)

1-5.Initializer_list(上)(大幅改变标准库容器的初值设定方式;也值得你在应用程序中直接使用。)

1-6.Initializer_list(下)

1-7.Explicit for ctors taking more than one argument

1-8.Range based for statement (一个很方便的 loop 写法。)

1-9.=default, =delete (允许你 "使用默认的 Big-Three函数 "放弃默认的 Big-Three函数")

1-10.Alias Template (也可称为 template typedef.)

1-11.Template template parameters (通过深入浅出的解释让你彻底了解这一范本高级用法。)

1-12.Type Alias

1-13.using, noexcept, override, final, declval, decltype

1-14.lambdas (一种比 function objects/functors 更便利的写法,其怪异的语法乍见之下令人困惑愕然。)

1-15.Variadic Templates (重回现场再一次学习这颗 C++11重磅炸弹,并以7种用法带您一窥堂奥。)

第二讲:C++11/14 (C++2.0) 标准库新部件

2-1.标准库源代码分布 (这是查看源代码的第一步。)

2-2.Rvalue references and Move Semantics(C++11最重要的新特性之一介绍何谓Rvalue;何谓Rvalue references;std::move()的意义与用法;如何写出move-aware class及其对容器的效能影响。)

2-3. Perfect Forwarding (介绍perfect forwardingunperfect forwarding之间的差别; std::forward()的意义与用法以及perfect forwarding move semantics的关系。)

2-4. 写出一个move-aware class

2-5. Move-aware class对容器的效能测试

2-6. 容器 (谈所有容器的内核结构所有容器的新旧版本结构比较。)

2-7. Move-aware class对容器的效能测试

2-8. 旧容器Hashtable的内核结构及现实用途

2-9. 新容器Unordered的内核结构及现实用途

2-10. Hash function (这是使用Unordered容器的最大罩门;本节以观察stringhash function的实际运作过程和结果来彻底理解hash function)

2-11. 新容器Forward_list的内核结构及现实用途

2-12. 万用的Hash Functions (本节介绍源自 Boost 的一种万用型 hash function写法)

2-13. Tuple (一种异质容器,允许 objects of any types 被组合到一起。标准库之实现令人拍案叫绝。)

2-14. shared_pointer (介绍此种最被广泛使用的智能指针的用法及其内核结构。)

2-15. Type traits (介绍并示范如何使用神奇的 type traits 查知 object types 的诸多特性。)

2-16. Multi-threads library 简介