更新时间:2023-09-26 16:18:38
封面
版权信息
作者简介
内容简介
前言
C++语言支持的程序设计方法
本书介绍
需要的基础知识
阅读建议
运行环境
资料获取
致谢
第1章 C++编程环境介绍
1.1 C++编程环境搭建说明
1.2 创建最基本的能运行的C++程序
1.3 Visual Studio中程序的调试方法
1.3.1 普通的断点调试(跟踪调试)
1.3.2 学会调试时查看内存中的内容
1.3.3 “快速监视”对话框
1.3.4 查看“反汇编”窗口
1.4 开启Visual Studio 2019对C++最新标准的编译支持
第2章 模板基础知识
2.1 函数模板
2.1.1 基本范例
2.1.2 实例化
2.1.3 模板参数的推断
2.1.4 重载
2.1.5 特化
2.1.6 默认参数
2.1.7 非类型模板参数
2.2 类模板、变量模板与别名模板
2.2.1 类模板的基本范例和模板参数的推断
2.2.2 类模板的特化
2.2.3 默认参数
2.2.4 类型别名
2.2.5 非类型模板参数
2.2.6 成员函数模板
2.2.7 类/类模板中的类模板(类模板的嵌套)
2.2.8 变量模板与成员变量模板
2.2.9 别名模板与成员别名模板
2.2.10 模板模板参数
2.2.11 共用体模板(联合模板)
2.3 类模板中的友元
2.3.1 友元类
2.3.2 友元函数
2.4 可变参模板
2.4.1 可变参函数模板
2.4.2 折叠表达式
2.4.3 可变参表达式
2.4.4 可变参类模板
2.5 多态在模板中的应用
2.6 模板的特殊继承关系
2.6.1 奇异(奇特)的递归模板模式
2.6.2 混入
2.7 模板代码的组织结构与模板的显式实例化和声明
2.7.1 模板代码的组织结构
2.7.2 模板的显式实例化、模板声明、代码组织结构
第3章 模板进阶知识
3.1 万能引用
3.1.1 类型区别的基本含义
3.1.2 基本认识
3.1.3 万能引用资格的剥夺与辨认
3.2 类型推断
3.2.1 如何查看类型推断结果
3.2.2 理解函数模板类型推断
3.2.3 auto类型常规推断
3.3 完美转发
3.3.1 完美转发的概念和步骤演绎
3.3.2 std::forward
3.3.3 普通参数的完美转发
3.3.4 在构造函数模板中使用完美转发范例
3.3.5 在可变参数模板中使用完美转发范例
3.3.6 完美转发失败的情形一例
3.4 std::enable_if的使用
3.4.1 一个简单范例
3.4.2 替换失败并不是一个错误(SFINAE)
3.4.3 enable_if
3.5 类模板中可变参的逐步展开
3.5.1 myclasst<Args...>继承
3.5.2 myclasst<Args>...继承
3.5.3 myclasst<Args char>...继承
3.5.4 myclasst<Args Args...>...继承
第4章 标准库的典型内容
4.1 std::declval
4.1.1 基本概念和常规范例
4.1.2 std::declval返回右值引用类型的原因
4.1.3 推导函数返回值范例
4.2 std::true_type和std::false_type
4.3 std::void_t
4.3.1 源码分析和常规范例
4.3.2 编译器如何选择泛化版本和特化版本
4.3.3 借助void_t和declval实现is_copy_assignable
4.3.4 综合范例
4.4 std::conditional
4.5 std::function的实现
4.5.1 标准库中的std::function
4.5.2 实现类似std::function的功能
4.6 std::remove_all_extents
4.7 std::integer_sequence
4.7.1 正向排列数字生成一个类型Integer_Sequence