作者简介
第1章 计算机、人与程序设计
1.1 简介
1.2 软件
1.3 人
1.4 计算机科学
1.5 计算机已无处不在
1.5.1 有屏幕和无屏幕
1.5.2 船舶
1.5.3 电信
1.5.4 医疗
1.5.5 信息领域
1.5.6 一种垂直的视角
1.5.7 与C++程序设计有何联系
1.6 程序员的理想境界
思考题
术语
习题
附言
第2章 Hello,World!
2.1 程序
2.2 经典的第一个程序
2.3 编译
2.4 链接
2.5 编程环境
简单练习
思考题
术语
习题
附言
第3章 对象、类型和值
3.1 输入
3.2 变量
3.3 输入和类型
3.4 运算和运算符
3.5 赋值和初始化
3.5.1 实例:检测重复单词
3.6 复合赋值运算符
3.6.1 实例:重复单词计数
3.7 命名
3.8 类型和对象
3.9 类型安全
3.9.1 安全转换
3.9.2 不安全转换
简单练习
思考题
术语
习题
附言
第4章 计算
4.1 简介
4.2 目标和工具
4.3 表达式
4.3.1 常量表达式
4.3.2 运算符
4.3.3 类型转换
4.4 语句
4.4.1 选择语句
4.4.2 循环语句
4.5 函数
4.5.1 为什么使用函数
4.5.2 函数声明
4.6 vector
4.6.1 遍历一个vector
4.6.2 vector空间增长
4.6.3 一个数值计算实例
4.6.4 一个文本实例
4.7 语言特性
简单练习
思考题
术语
习题
附言
第5章 错误
5.1 简介
5.2 错误的来源
5.3 编译时错误
5.3.1 语法错误
5.3.2 类型错误
5.3.3 警告
5.4 链接时错误
5.5 运行时错误
5.5.1 调用者处理错误
5.5.2 被调用者处理错误
5.5.3 报告错误
5.6 异常
5.6.1 参数错误
5.6.2 范围错误
5.6.3 输入错误
5.6.4 窄化错误
5.7 逻辑错误
5.8 估计
5.9 调试
5.9.1 实用调试建议
5.10 前置条件和后置条件
5.10.1 后置条件
5.11 测试
简单练习
思考题
术语
习题
附言
第6章 编写一个程序
6.1 一个问题
6.2 对问题的思考
6.2.1 程序设计的几个阶段
6.2.2 策略
6.3 回到计算器问题
6.3.1 第一步尝试
6.3.2 单词
6.3.3 实现单词
6.3.4 使用单词
6.3.5 重新开始
6.4 文法
6.4.1 英文文法
6.4.2 设计一个文法
6.5 将文法转换为程序
6.5.1 实现文法规则
6.5.2 表达式
6.5.3 项
6.5.4 基本表达式
6.6 试验第一个版本
6.7 试验第二个版本
6.8 单词流
6.8.1 实现Token_stream
6.8.2 读单词
6.8.3 读数值
6.9 程序结构
简单练习
思考题
术语
习题
附言
第7章 完成一个程序
7.1 简介
7.2 输入和输出
7.3 错误处理
7.4 处理负数
7.5 模运算%
7.6 清理代码
7.6.1 符号常量
7.6.2 使用函数
7.6.3 代码布局
7.6.4 注释
7.7 错误恢复
7.8 变量
7.8.1 变量和定义
7.8.2 引入name单词
7.8.3 预定义名字
7.8.4 我们到达目的地了吗
简单练习
思考题
术语
习题
附言
第8章 函数相关的技术细节
8.1 技术细节
8.2 声明和定义
8.2.1 声明的类别
8.2.2 变量和常量声明
8.2.3 默认初始化
8.3 头文件
8.4 作用域
8.5 函数调用和返回
8.5.1 声明参数和返回类型
8.5.2 返回一个值
8.5.3 传值
8.5.4 传常量引用
8.5.5 传引用
8.5.6 传值与传引用的对比
8.5.7 参数检查和转换
8.5.8 实现函数调用
8.5.9 constexpr函数
8.6 计算顺序
8.6.1 表达式计算
8.6.2 全局初始化
8.7 名字空间
8.7.1 using声明和using指令
简单练习
思考题
术语
习题
附言
第9章 类相关的技术细节
9.1 用户自定义类型
9.2 类和成员
9.3 接口和实现
9.4 演化一个类
9.4.1 结构和函数
9.4.2 成员函数和构造函数
9.4.3 保持细节私有性
9.4.4 定义成员函数
9.4.5 引用当前对象
9.4.6 报告错误
9.5 枚举类型
9.5.1 “平坦”枚举
9.6 运算符重载
9.7 类接口
9.7.1 参数类型
9.7.2 拷贝
9.7.3 默认构造函数
9.7.4 const成员函数
9.7.5 类成员和“辅助函数”
9.8 Date类
简单练习
思考题
术语
习题
附言
第10章 输入输出流
10.1 输入和输出
10.2 I/O流模型
10.3 文件
10.4 打开文件
10.5 读写文件
10.6 I/O错误处理
10.7 读取单个值
10.7.1 将程序分解为易管理的子模块
10.7.2 将人机对话从函数中分离
10.8 用户自定义输出运算符
10.9 用户自定义输入运算符
10.10 一个标准的输入循环
10.11 读取结构化的文件
10.11.1 在内存中的表示
10.11.2 读取结构化的值
10.11.3 改变表示方法
练习
思考题
术语
习题
附言
第11章 定制输入输出
11.1 有规律的与无规律的输入和输出
11.2 格式化输出
11.2.1 输出整数
11.2.2 输入整数
11.2.3 输出浮点数
11.2.4 精度
11.2.5 域
11.3 打开和定位文件
11.3.1 文件打开模式
11.3.2 二进制文件
11.3.3 在文件中定位
11.4 字符串流
11.5 面向行的输入
11.6 字符分类
11.7 使用非标准分隔符
11.8 更多未讨论内容
简单练习
思考题
术语
习题
附言
第12章 向量和自由空间
12.1 简介
12.2 vector的基本知识
12.3 内存、地址和指针
12.3.1 sizeof运算符
12.4 自由空间和指针
12.4.1 自由空间分配
12.4.2 通过指针访问数据
12.4.3 指针范围
12.4.4 初始化
12.4.5 空指针
12.4.6 自由空间释放
12.5 析构函数
12.5.1 生成的析构函数
12.5.2 析构函数和自由空间
12.6 访问元素
12.7 指向类对象的指针
12.8 类型混用:void*和类型转换
12.9 指针和引用
12.9.1 指针参数和引用参数
12.9.2 指针、引用和继承
12.9.3 实例:链表
12.9.4 链表操作
12.9.5 链表的使用
12.10 this指针
12.10.1 关于链表使用的更多讨论
简单练习
思考题
术语
习题
附言
第13章 向量和数组
13.1 简介
13.2 初始化
13.3 拷贝
13.3.1 拷贝构造函数
13.3.2 拷贝赋值
13.3.3 拷贝术语
13.3.4 移动
13.4 必要的操作
13.4.1 显式构造函数
13.4.2 调试构造函数和析构函数
13.5 访问vector元素
13.5.1 对const向量重载运算符
13.6 数组
13.6.1 指向数组元素的指针
13.6.2 指针和数组
13.6.3 数组初始化
13.6.4 指针问题
13.7 实例:回文
13.7.1 使用string实现回文
13.7.2 使用数组实现回文
13.7.3 使用指针实现回文
简单练习
思考题
术语
习题
附言
第14章 向量、模板和异常
14.1 问题
14.2 改变大小
14.2.1 表示方式
14.2.2 reserve和capacity
14.2.3 resize
14.2.4 push_back
14.2.5 赋值
14.2.6 到目前为止的vector类
14.3 模板
14.3.1 类型作为模板参数
14.3.2 泛型编程
14.3.3 概念
14.3.4 容器和继承
14.3.5 整数作为模板参数
14.3.6 模板实参推断
14.3.7 泛化vector
14.4 范围检查和异常
14.4.1 旁白:设计上的考虑
14.4.2 坦白:使用宏
14.5 资源和异常
14.5.1 潜在的资源管理问题
14.5.2 资源获取即初始化
14.5.3 保证
14.5.4 unique_ptr
14.5.5 以移动方式返回结果
14.5.6 vector类的RAII
简单练习
思考题
术语
习题
附言
附录A C++语言概要
附录B Visual Studio简要入门教程
术语表
参考文献