封面
版权信息
作者简介
内容简介
前言
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
4.7.2 逆向排列数字生成一个类型Integer_Sequence_Reverse
4.7.3 将一个数字重复多次生成一个类型Repeat_Integer
4.8 std::is_union、std::is_class和std::integral_constant
4.8.1 std::is_union
4.8.2 std::is_class
4.8.3 std::integral_constant
第5章 萃取技术与策略技术
5.1 萃取技术及固定萃取演示
5.1.1 一个常规范例
5.1.2 迭代器范例
5.1.3 通过容器(数组)类型萃取元素类型范例
5.1.4 引用类型的移除和增加
5.1.5 const修饰符的移除
5.1.6 退化技术
5.2 萃取技术中的值萃取演示
5.2.1 一个常规范例
5.2.2 判断是否为void类型的范例
5.2.3 判断两个类型是否相同
5.3 使用SFINAE特性的信息萃取
5.3.1 用成员函数重载实现is_default_constructible
5.3.2 用成员函数重载实现is_convertible
5.3.3 用成员函数重载实现is_class
5.3.4 用成员函数重载实现is_base_of
5.3.5 用类模板特化实现is_default_constructible
5.4 将trait类模板用作模板参数
5.5 策略技术中的算法策略
5.5.1 常规范例:普通策略类
5.5.2 常规范例:策略类模板
5.5.3 萃取技术与策略技术的比较
第6章 元编程
6.1 术语、元函数
6.1.1 术语
6.1.2 元函数
6.2 混合元编程
6.2.1 常规的计算点积范例
6.2.2 混合元编程计算点积
6.3 typelist实现(类型计算范例)
6.3.1 设计和基本操作接口(算法)
6.3.2 扩展操作接口(算法)
6.3.3 typelist的老式设计与typelist的思考
6.4 tuple实现
6.4.1 重要基础知识回顾
6.4.2 元组基本概念、基础代码的设计和实现
6.4.3 操作接口(算法)
第7章 标准模板库代码
7.1 list容器的简单实现
7.1.1 基础代码
7.1.2 插入新元素前的准备
7.1.3 插入新元素
7.1.4 释放容器中元素所占用的内存
7.2 迭代器设计中的分类目的
7.2.1 迭代器的分类
7.2.2 迭代器分类目的详述
7.3 一个典型算法—find_if的简单实现
更新时间:2023-09-26 16:18:38