国外经典教材·C++面向对象程序设计:基础数据结构与编程思想(第4版)

第1章 计算机和C++编程入门
概述
1.1 计算机系统
1.1.1 硬件
1.1.2 软件
1.1.3 高级语言
1.1.4 编译器
自测题
1.1.5 历史回顾
1.2 编程和问题求解
1.2.1 算法
1.2.2 程序设计
1.2.3 面向对象编程
1.2.4 软件生存期
1.3 C++入门
1.3.1 C++语言的起源
1.3.2 一个C++示范程序
1.3.3 陷阱:在\n中使用错误的斜杠
1.3.4 编程提示:输入和输出语法
1.3.5 简单C程序的布局
1.3.6 陷阱:在include文件名前添加一个空格
1.3.7 编译和运行C++程序
1.3.8 编程提示:让程序运行起来
自测题
1.4 测试和调试
1.4.1 程序错误的种类
1.4.2 陷阱:错误地假定程序正确
自测题
小结
自测题答案
编程项目
第2章 C++基础知识
概述
预备知识
2.1 变量和赋值
2.1.1 变量
2.1.2 名称:标识符
2.1.3 变量声明
2.1.4 赋值语句
2.1.5 陷阱:未初始化的变量
2.1.6 编程提示:使用有意义的名称
自测题
2.2 输入和输出
2.2.1 使用cout进行输出
2.2.2 include预编译指令和命名空间
2.2.3 转义序列
2.2.4 编程提示:用\n或endl终止每一个程序
2.2.5 格式化带小数点的数字
2.2.6 用cin进行输入
2.2.7 设计输入和输出
2.2.8 编程提示:I/O中的行中断
自测题
2.3 数据类型和表达式
2.3.1 int类型和double类型
2.3.2 其他数字类型
2.3.3 char类型
2.3.4 bool类型
2.3.5 类型的兼容性
2.3.6 算术操作符和表达式
2.3.7 陷阱:除法中的整数
自测题
2.3.8 更多赋值语句
2.4 简单控制流程
2.4.1 一个简单的分支机制
2.4.2 陷阱:连续的不等式
2.4.3 陷阱:错用=来取代==
2.4.4 复合语句
自测题
2.4.5 简单的循环机制
2.4.6 递增操作符和递减操作符
2.4.7 编程示例:信用卡余额
2.4.8 陷阱:无限循环
自测题
2.5 程序风格
2.5.1 缩进
2.5.2 注释
2.5.3 为常量命名
自测题
小结
自测题答案
编程项目
第3章 过程抽象和返回一个值的函数
概述
预备知识
3.1 自顶向下设计
3.2 预定义函数
3.2.1 使用预定义函数
3.2.2 强制类型转换
3.2.3 强制类型转换的古老形式
3.2.4 陷阱:整数除法丢弃了小数部分
自测题
3.3 程序员自定义函数
3.3.1 函数定义
3.3.2 另一种形式的函数声明
3.3.3 陷阱:实参顺序错误
3.3.4 函数定义语法总结
3.3.5 再论函数定义的位置
自测题
3.4 过程抽象
3.4.1 黑盒的比喻
3.4.2 编程提示:选择形参名称
3.4.3 案例分析:购买比萨
3.4.4 编程提示:使用伪代码
自测题
3.5 局部变量
3.5.1 函数如同小程序
3.5.2 编程实例:豌豆试验田
3.5.3 全局常量和全局变量
3.5.4 传值调用形参是局部变量
3.5.5 再论命名空间
自测题
3.5.6 编程实例:阶乘函数
3.6 重载函数名称
3.6.1 重载入门
3.6.2 编程实例:购买比萨(修订版)
3.6.3 自动类型转换
自测题
小结
自测题答案
编程项目
第4章 所有子任务的函数
概述
预备知识
4.1 void函数
4.1.1 void函数的定义
4.1.2 编程实例:温度换算
4.1.3 void函数中的return语句
自测题
4.2 传引用调用形参
4.2.1 初探传引用调用
4.2.2 传引用调用详解
4.2.3 编程实例:swap_values函数
4.2.4 混合的参数列表
4.2.5 编程提示:应该使用哪种参数
4.2.6 陷阱:疏忽的局部变量
自测题
4.3 使用过程抽象
4.3.1 由函数来调用函数
4.3.2 前条件和后条件
4.3.3 案例分析:超市定价系统
自测题
4.4 测试和调试函数
Stub和驱动程序
自测题
小结
自测题答案
编程项目
第5章 I/O流--对象和类入门
概述
预备知识
5.1 流和基本文件I/O
5.1.1 文件之于I/O的重要性
5.1.2 文件I/O
5.1.3 类与对象入门
5.1.4 编程提示:检查文件是否成功打开
5.1.5 文件I/O技术
自测题
5.1.6 追加到文件(选读)
5.1.7 文件名作为输入(选读)
5.2 流I/O工具
5.2.1 用流函数格式化输出
5.2.2 操纵元
自测题
5.2.3 流作为函数实参
5.2.4 编程提示:检查文件尾
5.2.5 命名空间的问题
5.2.6 编程实例:整理文件格式
自测题
5.3 字符I/O
5.3.1 get和put成员函数
5.3.2 putback成员函数(选读)
5.3.3 编程实例:检查输入
5.3.4 陷阱:输入中不期而遇的“\n”
自测题
5.3.5 eof成员函数
自测题
5.3.6 编程实例:编辑文本文件
5.3.7 预定义的字符函数
5.3.8 陷阱:toupper和tolower返回int值
自测题
5.4 继承
5.4.1 流类之间的继承关系
5.4.2 编程实例:另一个new_line函数
5.4.3 函数的默认参数(选读)
自测题
小结
自测题答案
编程项目
第6章 定义类
概述
预备结构
6.1 结构
6.1.1 用于异种数据的结构
6.1.2 陷阱:结构定义中忘记一个分号
6.1.3 结构作为函数参数
6.1.4 编程提示:使用层次化结构
6.1.5 对结构进行初始化
自测题
6.2 类
6.2.1 定义类和成员函数
自测题
6.2.2 公共成员和私有成员
6.2.3 编程提示:将所有成员变量变成私有
6.2.4 编程提示:定义取值函数和赋值函数
自测题
6.2.5 编程提示:将赋值操作符用于对象
6.2.6 编程实例:BankAccount类(版本1)
6.2.7 总结类的一些特征
自测题
6.2.8 用于初始化的构造函数
6.2.9 编程提示:总是包括一个默认构造函数
6.2.10 陷阱:无参数构造函数
自测题
6.3 抽象数据类型
6.3.1 用于生成抽象数据类型的类
6.3.2 编程实例:类的另一种实现
自测题
小结
自测题答案
编程项目
第7章 更多的控制流程
概述
预备知识
7.1 使用布尔表达式
7.1.1 布尔表达式求值
7.1.2 陷阱:将布尔表达式转换成int值
自测题
7.1.3 能返回布尔值的函数
自测题
7.1.4 枚举类型(选读)
7.2 多路分支
7.2.1 嵌套语句
7.2.2 编程提示:在嵌套语句中使用花括号
7.2.3 多路if-else语句
7.2.4 编程实例:州税
自测题
7.2.5 switch语句
7.2.6 陷阱:忘记在switch语句中添加break
7.2.7 为菜单使用switch语句
7.2.8 编程提示:在分支语句中使用函数调用
7.2.9 块
7.2.10 陷阱:疏忽局部变量
自测题
7.3 C++循环语句详解
7.3.1 while语句回顾
7.3.2 再论递增操作符和递减操作符
自测题
7.3.3 for语句
7.3.4 陷阱:for语句中多余的分号
7.3.5 应该使用哪种循环
自测题
7.3.6 陷阱:未初始化的变量和无限循环
7.3.7 break语句
7.3.8 陷阱:嵌套循环中的break语句
自测题
7.4 设计循环
7.4.1 求和与求乘积的循环
7.4.2 终止循环
7.4.3 嵌套循环
自测题
7.4.4 调试循环
自测题
小结
自测题答案
编程项目
第8章 友元函数和重载操作符
概述
预备知识
8.1 友元函数
8.1.1 编程实例:一个相等性函数
自测题
8.1.2 友元函数
8.1.3 编程提示:定义取值函数和友元函数
8.1.4 编程提示:同时使用成员函数和非成员函数
8.1.5 编程实例:Money类(版本1)
8.1.6 实现digit_to_int(选读)
8.1.7 陷阱:数字常量中的前置零
自测题
8.1.8 const参数修饰符
8.1.9 陷阱:不一致地使用const
自测题
8.2 重载操作符
8.2.1 重载操作符
自测题
8.2.2 用于自动类型转换的构造函数
自测题
8.2.3 重载一元操作符
8.2.4 重载>>和中的其他函数
自测题
第9章 独立编译和命名空间
第10章 数组
第11章 字符串和向量
第12章 指针和动态数组
第13章 递归
第14章 模板
第15章 指针和链接
第16章 继承
第17章 异常处理
附录1 C++关键字
附录2 操作符的优先级
附录3 ASCII字符集
附录4 部分库函数
附录5 assert语句
附录6 内联函数
附录7 重载数据索引方括号
附录8 this指针
附录9 将操作符重载为成员操作符
概述
1.1 计算机系统
1.1.1 硬件
1.1.2 软件
1.1.3 高级语言
1.1.4 编译器
自测题
1.1.5 历史回顾
1.2 编程和问题求解
1.2.1 算法
1.2.2 程序设计
1.2.3 面向对象编程
1.2.4 软件生存期
1.3 C++入门
1.3.1 C++语言的起源
1.3.2 一个C++示范程序
1.3.3 陷阱:在\n中使用错误的斜杠
1.3.4 编程提示:输入和输出语法
1.3.5 简单C程序的布局
1.3.6 陷阱:在include文件名前添加一个空格
1.3.7 编译和运行C++程序
1.3.8 编程提示:让程序运行起来
自测题
1.4 测试和调试
1.4.1 程序错误的种类
1.4.2 陷阱:错误地假定程序正确
自测题
小结
自测题答案
编程项目
第2章 C++基础知识
概述
预备知识
2.1 变量和赋值
2.1.1 变量
2.1.2 名称:标识符
2.1.3 变量声明
2.1.4 赋值语句
2.1.5 陷阱:未初始化的变量
2.1.6 编程提示:使用有意义的名称
自测题
2.2 输入和输出
2.2.1 使用cout进行输出
2.2.2 include预编译指令和命名空间
2.2.3 转义序列
2.2.4 编程提示:用\n或endl终止每一个程序
2.2.5 格式化带小数点的数字
2.2.6 用cin进行输入
2.2.7 设计输入和输出
2.2.8 编程提示:I/O中的行中断
自测题
2.3 数据类型和表达式
2.3.1 int类型和double类型
2.3.2 其他数字类型
2.3.3 char类型
2.3.4 bool类型
2.3.5 类型的兼容性
2.3.6 算术操作符和表达式
2.3.7 陷阱:除法中的整数
自测题
2.3.8 更多赋值语句
2.4 简单控制流程
2.4.1 一个简单的分支机制
2.4.2 陷阱:连续的不等式
2.4.3 陷阱:错用=来取代==
2.4.4 复合语句
自测题
2.4.5 简单的循环机制
2.4.6 递增操作符和递减操作符
2.4.7 编程示例:信用卡余额
2.4.8 陷阱:无限循环
自测题
2.5 程序风格
2.5.1 缩进
2.5.2 注释
2.5.3 为常量命名
自测题
小结
自测题答案
编程项目
第3章 过程抽象和返回一个值的函数
概述
预备知识
3.1 自顶向下设计
3.2 预定义函数
3.2.1 使用预定义函数
3.2.2 强制类型转换
3.2.3 强制类型转换的古老形式
3.2.4 陷阱:整数除法丢弃了小数部分
自测题
3.3 程序员自定义函数
3.3.1 函数定义
3.3.2 另一种形式的函数声明
3.3.3 陷阱:实参顺序错误
3.3.4 函数定义语法总结
3.3.5 再论函数定义的位置
自测题
3.4 过程抽象
3.4.1 黑盒的比喻
3.4.2 编程提示:选择形参名称
3.4.3 案例分析:购买比萨
3.4.4 编程提示:使用伪代码
自测题
3.5 局部变量
3.5.1 函数如同小程序
3.5.2 编程实例:豌豆试验田
3.5.3 全局常量和全局变量
3.5.4 传值调用形参是局部变量
3.5.5 再论命名空间
自测题
3.5.6 编程实例:阶乘函数
3.6 重载函数名称
3.6.1 重载入门
3.6.2 编程实例:购买比萨(修订版)
3.6.3 自动类型转换
自测题
小结
自测题答案
编程项目
第4章 所有子任务的函数
概述
预备知识
4.1 void函数
4.1.1 void函数的定义
4.1.2 编程实例:温度换算
4.1.3 void函数中的return语句
自测题
4.2 传引用调用形参
4.2.1 初探传引用调用
4.2.2 传引用调用详解
4.2.3 编程实例:swap_values函数
4.2.4 混合的参数列表
4.2.5 编程提示:应该使用哪种参数
4.2.6 陷阱:疏忽的局部变量
自测题
4.3 使用过程抽象
4.3.1 由函数来调用函数
4.3.2 前条件和后条件
4.3.3 案例分析:超市定价系统
自测题
4.4 测试和调试函数
Stub和驱动程序
自测题
小结
自测题答案
编程项目
第5章 I/O流--对象和类入门
概述
预备知识
5.1 流和基本文件I/O
5.1.1 文件之于I/O的重要性
5.1.2 文件I/O
5.1.3 类与对象入门
5.1.4 编程提示:检查文件是否成功打开
5.1.5 文件I/O技术
自测题
5.1.6 追加到文件(选读)
5.1.7 文件名作为输入(选读)
5.2 流I/O工具
5.2.1 用流函数格式化输出
5.2.2 操纵元
自测题
5.2.3 流作为函数实参
5.2.4 编程提示:检查文件尾
5.2.5 命名空间的问题
5.2.6 编程实例:整理文件格式
自测题
5.3 字符I/O
5.3.1 get和put成员函数
5.3.2 putback成员函数(选读)
5.3.3 编程实例:检查输入
5.3.4 陷阱:输入中不期而遇的“\n”
自测题
5.3.5 eof成员函数
自测题
5.3.6 编程实例:编辑文本文件
5.3.7 预定义的字符函数
5.3.8 陷阱:toupper和tolower返回int值
自测题
5.4 继承
5.4.1 流类之间的继承关系
5.4.2 编程实例:另一个new_line函数
5.4.3 函数的默认参数(选读)
自测题
小结
自测题答案
编程项目
第6章 定义类
概述
预备结构
6.1 结构
6.1.1 用于异种数据的结构
6.1.2 陷阱:结构定义中忘记一个分号
6.1.3 结构作为函数参数
6.1.4 编程提示:使用层次化结构
6.1.5 对结构进行初始化
自测题
6.2 类
6.2.1 定义类和成员函数
自测题
6.2.2 公共成员和私有成员
6.2.3 编程提示:将所有成员变量变成私有
6.2.4 编程提示:定义取值函数和赋值函数
自测题
6.2.5 编程提示:将赋值操作符用于对象
6.2.6 编程实例:BankAccount类(版本1)
6.2.7 总结类的一些特征
自测题
6.2.8 用于初始化的构造函数
6.2.9 编程提示:总是包括一个默认构造函数
6.2.10 陷阱:无参数构造函数
自测题
6.3 抽象数据类型
6.3.1 用于生成抽象数据类型的类
6.3.2 编程实例:类的另一种实现
自测题
小结
自测题答案
编程项目
第7章 更多的控制流程
概述
预备知识
7.1 使用布尔表达式
7.1.1 布尔表达式求值
7.1.2 陷阱:将布尔表达式转换成int值
自测题
7.1.3 能返回布尔值的函数
自测题
7.1.4 枚举类型(选读)
7.2 多路分支
7.2.1 嵌套语句
7.2.2 编程提示:在嵌套语句中使用花括号
7.2.3 多路if-else语句
7.2.4 编程实例:州税
自测题
7.2.5 switch语句
7.2.6 陷阱:忘记在switch语句中添加break
7.2.7 为菜单使用switch语句
7.2.8 编程提示:在分支语句中使用函数调用
7.2.9 块
7.2.10 陷阱:疏忽局部变量
自测题
7.3 C++循环语句详解
7.3.1 while语句回顾
7.3.2 再论递增操作符和递减操作符
自测题
7.3.3 for语句
7.3.4 陷阱:for语句中多余的分号
7.3.5 应该使用哪种循环
自测题
7.3.6 陷阱:未初始化的变量和无限循环
7.3.7 break语句
7.3.8 陷阱:嵌套循环中的break语句
自测题
7.4 设计循环
7.4.1 求和与求乘积的循环
7.4.2 终止循环
7.4.3 嵌套循环
自测题
7.4.4 调试循环
自测题
小结
自测题答案
编程项目
第8章 友元函数和重载操作符
概述
预备知识
8.1 友元函数
8.1.1 编程实例:一个相等性函数
自测题
8.1.2 友元函数
8.1.3 编程提示:定义取值函数和友元函数
8.1.4 编程提示:同时使用成员函数和非成员函数
8.1.5 编程实例:Money类(版本1)
8.1.6 实现digit_to_int(选读)
8.1.7 陷阱:数字常量中的前置零
自测题
8.1.8 const参数修饰符
8.1.9 陷阱:不一致地使用const
自测题
8.2 重载操作符
8.2.1 重载操作符
自测题
8.2.2 用于自动类型转换的构造函数
自测题
8.2.3 重载一元操作符
8.2.4 重载>>和中的其他函数
自测题
第9章 独立编译和命名空间
第10章 数组
第11章 字符串和向量
第12章 指针和动态数组
第13章 递归
第14章 模板
第15章 指针和链接
第16章 继承
第17章 异常处理
附录1 C++关键字
附录2 操作符的优先级
附录3 ASCII字符集
附录4 部分库函数
附录5 assert语句
附录6 内联函数
附录7 重载数据索引方括号
附录8 this指针
附录9 将操作符重载为成员操作符
(美国)Walter Savitch,美国加州圣地亚哥大学教授,计算机科学课程的主要设计者之一。作为一名享有盛名且受人尊敬的作者和教育专家,他的授课和写作风格深受教师和学生欢迎。他编写过多本非常畅销的计算机教材,其中包括Problem Solving withC++:The Object of Programming,ThirdEdition和Data Structures and OtherObjects Using C++,Second Edition。
《C++面向对象程序设计》是最优秀的C++教材之一,在全球已经拥有数十万读者。作者结合自己多年的教学经验,根据教学大纲精心设计并编写了书中内容。与此同时,作者还以粗体显示了c++的重要元素,非常适合初学者掌握重要的编程概念。
全书共17章,9个附录。在讲解了C++基础知识之后,直接引导学生深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类以及异常。
全书共17章,9个附录。在讲解了C++基础知识之后,直接引导学生深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类以及异常。
比价列表
公众号、微信群

微信公众号

实时获取购书优惠