内容简介
第1章 概述
1.1 C++语言发展历史
1.2 一个简单的C++程序
1.3 C++程序的开发步骤
1.4 开发工具简介
1.5 C++标准及开发工具
1.6 C++11与C++14新特征
1.7 本书组织结构
1.8 类型大图及导读
第2章 基本类型与变量
2.1 关键字和标识符
2.1.1 关键字
2.1.2 标识符
2.1.3 标点符号
2.1.4 分隔符与标记
2.2 基本类型
2.2.1 逻辑型
2.2.2 字符型
2.2.3 整数型
2.2.4 浮点型
2.2.5 空类型
2.3 字面值
2.3.1 逻辑值
2.3.2 整型值
2.3.3 浮点值
2.3.4 字符值
2.3.5 字符串值
2.4 变量
2.4.1 变量的说明
2.4.2 变量的初始化
2.4.3 auto初始化
2.4.4 变量的赋值
2.4.5 变量的输入输出
2.4.6 命名常量
小结
练习题
第3章 运算符与表达式
3.1 基本运算符
3.1.1 算术运算符
3.1.2 关系运算符
3.1.3 逻辑运算符
3.1.4 位运算符
3.1.5 条件运算符
3.1.6 赋值运算符
3.1.7 逗号运算符
3.1.8 自增自减运算符
3.1.9 sizeof运算符
3.1.10 typeid运算符
3.1.11 其他运算符
3.2 表达式
3.2.1 左值表达式和右值表达式
3.2.2 表达式语句
3.2.3 表达式类型与decltype
3.3 类型转换
3.3.1 自动类型转换
3.3.2 赋值类型转换
3.3.3 强制类型转换
小结
练习题
第4章 基本语句
4.1 语句分类
4.2 结构化编程基本结构
4.2.1 顺序结构
4.2.2 选择结构
4.2.3 循环结构
4.3 选择语句
4.3.1 条件语句
4.3.2 switch语句
4.4 循环语句
4.4.1 while语句
4.4.2 do-while语句
4.4.3 for语句
4.4.4 循环语句的比较
4.4.5 循环的嵌套
4.5 跳转语句
4.5.1 break语句
4.5.2 continue语句
4.5.3 goto语句与标号语句
4.6 综合示例
小结
练习题
第5章 函数和编译预处理
5.1 函数基本概念
5.1.1 库函数和用户定义函数
5.1.2 无参函数和有参函数
5.1.3 有返回函数和无返回函数
5.2 函数的定义
5.2.1 传统函数定义
5.2.2 函数定义的要点
5.3 函数的调用
5.3.1 函数调用的形式
5.3.2 函数调用的方式
5.3.3 函数调用与以值传递
5.4 函数重载
5.4.1 重载函数的定义
5.4.2 重载函数的调用
5.5 嵌套调用和递归调用
5.5.1 函数的嵌套调用
5.5.2 函数的递归调用
5.6 函数原型
5.7 auto函数与尾随返回类型
5.8 特殊参数
5.8.1 带缺省值的形参
5.8.2 可变参数
5.9 inline函数与constexpr 函数
5.9.1 inline函数
5.9.2 constexpr函数
5.10 作用域
5.10.1 局部作用域
5.10.2 文件作用域与全局作用域运算符
5.10.3 函数原型作用域
5.10.4 函数作用域
5.11 程序运行期存储区域
5.12 存储类
5.12.1 static变量与多文件项目
5.12.2 extern变量
5.12.3 thread_ local变量
5.12.4 存储类小结
5.13 编译预处理
5.13.1 包含文件
5.13.2 无参宏
5.13.3 有参宏
5.13.4 条件编译
5.13.5 条件编译示例
5.13.6 其他预处理指令
小结
练习题
第6章 数组与字符串
6.1 一维数组
6.1.1 一维数组的定义
6.1.2 一维数组的初始化
6.1.3 一维数组的访问
6.1.4 基于范围for语句
6.1.5 一维数组的应用
6.1.6 调用标准算法简化数组编程
6.2 二维数组
6.2.1 二维数组的定义
6.2.2 二维数组的初始化
6.2.3 二维数组的应用
6.3 数组与函数
6.4 容器vector与map
6.4.1 vector
6.4.2 map
6.4.3 初始化列表与统一初始化
6.5 字符数组与字符串
6.5.1 字符数组的定义
6.5.2 字符数组的初始化
6.5.3 字符数组的输入输出
6.5.4 字符数组的操作
6.6 字符串处理函数
6.6.1 字符数组处理函数
6.6.2 string类型
6.6.3 字符串应用示例
小结
练习题
第7章 结构、枚举、联合体
7.1 结构
7.1.1 结构类型的定义
7.1.2 说明结构变量
7.1.3 结构变量的初始化
7.1.4 结构变量的使用
7.1.5 结构的数组
7.1.6 结构中的静态成员
7.1.7 结构的嵌套定义
7.1.8 C++结构的构造函数与成员函数
7.2 位域
7.2.1 位域的定义
7.2.2 位域的使用
7.3 枚举
7.3.1 枚举类型及枚举变量
7.3.2 枚举的使用
7.3.3 强类型枚举
7.4 联合体
7.4.1 联合体类型的定义
7.4.2 联合体变量的说明及使用
7.4.3 非受限联合体
7.5 类型别名typedef与using
小结
练习题
第8章 指针和引用
8.1 指针及指针变量
8.1.1 指针概念与求址运算
8.1.2 指针变量的说明与初始化
8.1.3 指针的运算
8.1.4 用nullptr替代NULL
8.2 指针与结构
8.2.1 结构的指针
8.2.2 指针作为结构成员
8.3 指针与数组
8.3.1 用指针访问数组
8.3.2 指针与字符串
8.3.3 指针的数组
8.4 指针与函数
8.4.1 指针作为形参
8.4.2 函数返回指针
8.4.3 函数的指针
8.5 void指针与const指针
8.5.1 void指针
8.5.2 const指针
8.6 动态使用内存
8.6.1 new运算符
8.6.2 delete运算符
8.6.3 智能指针与垃圾回收GC
8.7 引用
8.7.1 左值引用
8.7.2 左值引用与数组、指针的关系
8.7.3 左值引用与函数
8.7.4 指针与左值引用的对比
8.7.5 右值引用&&
8.7.6 引用类型绑定关系
8.7.7 auto推导与decltype推导规则
8.8 Lambda表达式
8.8.1 语法构造
8.8.2 简单用法
8.8.3 嵌套L式与高阶函数
8.8.4 调用5TL算法
小结
练习题
第9章 类和对象
9.1 类
9.1.1 类的定义
9.1.2 类成员的可见性
9.1.3 类的数据成员
9.1 4类的成员函数
9.1.5 类与结构的区别
9.2 对象
9.2.1 对象的创建
9.2.2 访问对象的成员
9.2.3 类与对象的关系
9.3 this指针
9.4 类中的其他内容
小结
练习题
第10章 类的成员
10.1 构造函数
10.1.1 构造函数的定义
10.1.2 缺省构造函数
10.1.3 委托构造函数
10.2 析构函数
10.3 拷贝构造函数与拷贝赋值函数
10.3.1 拷贝构造函数
10.3.2 拷贝赋值函数
10.3.3 浅拷贝与深拷贝
10.3.4 用stnng替代char*
10.3.5 转换构造函数
10.4 移动构造函数与移动赋值函数
10.4.1 移动语义
10.4.2 移动构造函数
10.4.3 移动赋值函数
10.4.4 移动实例分析
10.5 特殊成员函数及其显式控制
10.5.1 特殊成员函数总结
10.5.2 特殊成员函数的显式控制
10.6 复合对象与成员对象
10.6.1 复合类的构造与析构
10.6.2 复合对象设计要点
10.7 对象数组
10.7.1 定义和使用
10.7.2 对象数组作为成员
10.8 静态成员
10.8.1 静态数据成员
10.8.2 静态成员函数
10.9 限定符
10.9.1 限定符const
10.9.2 限定符volatile
10.9.3 引用限定符
10.10 类成员的指针
10.10.1 数据成员的指针
10.10.2 成员函数的指针
10.11 线程对象thread
小结
练习题
第11章 类的继承
11.1 继承与派生
11.1.1 基类与派生类
11.1.2 派生类的定义与构成
11.1.3 继承方式与访问控制
11.2 派生类的构造和析构
11.2.1 派生类的构造函数
11.2.2 派生类继承构造函数
11.2.3 派生类的析构过程
11.3 二义性问题与支配规则
11.3.1 多继承造成的二义性
11.3.2 支配规则
11.3.3 导入基类成员
11.4 虚基类
11.4.1 共同基类造成的二义性
11.4.2 虚基类的说明
11.4.3 虚基类的例子
11.5 子类型关系
11.6 虚函数
11.6.1 虚函数定义和使用
11.6.2 成员函数中调用虚函数
11.6.3 构造函数中调用虚函数
11.6.4 虚析构函数
11.6.5 纯虚函数与抽象类
11.6.6 final函数与类
11.7 标量、平凡、标准布局与POD
11.8 字面类型与constexpr对象
11.9 继承性设计要点
小结
练习题
第12章 运算符重载
12.1 一般运算符重载
12.1.1 运算符重载函数
12.1.2 双目运算符的重载
12.1.3 单目运算符的重载
12.2 友元函数实现运算符
12.2.1 友元friend
12.2.2 友元运算符函数
12.2.3 用户定义字面值UDL
12.3 特殊运算符重载
12.3.1 类型转换函数
12.3.2 下标运算符
12.3.3 函数调用运算符
12.3.4 new/delete运算符
小结
练习题
第13章 模板与STL
13.1 模板的概念
13.2 函数模板
13.2.1 函数模板的定义
13.2.2 函数模板的使用
13.2.3 函数模板的显式特例化
13.2.4 函数模板与有参宏的区别
13.2.5 函数模板重载与SFINAE规则
13.2.6 模板正确实例化与静态断言
13.2.7 带缺省实参的函数模板
13.2.8 可变参量的函数模板
13.2.9 完美转发与引用折叠规则
13.2.10 auto函数推导返回类型
13.3 类模板与别名模板
13.3.1 类模板的定义
13.3.2 类模板的使用
13.3.3 显式特例化与部分特例化
13.3.4 友元模板
13.3.5 类模板的继承
13.3.6 带缺省实参的类模板
13.3.7 可变参量的类模板
13.3.8 嵌套类模板
13.3.9 别名模板
13.4 标准模板库STL
13.4.1 容器概念
13.4.2 迭代器
13.4.3 容器的共同成员类型和操作
13.4.4 算法
13.4.5 基于C++11简化编程
13.4.6 函数对象
13.4.7 vector, deque和list
13.4.8 set和multiset
13.4.9 map和multimap
13.5 命名空间
13.5.1 命名空间的定义
13.5.2 空间中成员的访问
13.5.3 inline命名空间
小结
练习题
第14章 输入输出流
14.1 概述
14.1.1 流
14.1.2 文件
14.1.3 缓冲
14.2 基本流类
14.2.1 基本流类体系
14.2.2 预定义标准对象
14.2.3 流的格式控制
14.2.4 流的错误处理
14.3 标准输入/输出
14.3.1 cin输入要点
14.3.2 输入操作的成员函数
14.3.3 cout输出要点
14.3.4 输出操作的成员函数
14.3.5 重载<<和>>运算符
14.4 文件流
14.4.1 文件概述
14.4.2 文件处理的一般过程
14.4.3 文件的打开与关闭
14.4.4 文本文件的使用
14.4.5 二进制文件的使用
14.4.6 文件的随机访问
小结
练习题
第15章 异常
15.1 异常的概念
15.2 异常类型的架构
15.3 异常处理语句
15.3.1 throw语句
15.3.2 try-catch语句
15.3.3 异常处理的例子
15.3.4 无异常noexcept
15.4 终止处理器
15.5 通用属性
小结
练习题
附录A ASCII码表
表A.1 常用ASCII码表
表A.2 ASCII控制字符
附录B 常用库函数
表B.1 运行库的功能分类
表B.2 运行库头文件
表B.3 标准C++头文件
表B.4 string类型<string>
表B.5 数学函数<math.h>
表B.6 C标准库<stdlib.h>
表B.7 内存函数<memory.h>
表B.8 时间函数<time.h>与<sys/timeb.h>
参考文献