好学的C++程序设计

978-7-115-28309-2
作者: 张祖浩 沈天晴
译者:
编辑: 张涛
分类: C++

图书目录:

目 录

第 1章 概论 1

1.1 计算机怎样计数 1

1.1.1 乒乓球场上的计分牌 1

1.1.2 二进制怎样表示全正数和正负数 1

1.1.3 计算机中二进制数怎样存储 2

1.2 计算机怎样对数据进行处理 3

1.2.1 把算法形成的程序输入计算机 3

1.2.2 用什么语言输入计算机能懂 3

1.3 C++程序怎样写出和运行 3

1.3.1 举个C++程序简例看看 3

1.3.2 C++程序从写出到运行的几个步骤 5

1.3.3 本书前几章内容的安排 5

1.4 习题 6

第 2章 对基本数据分类存储和访问 7

2.1 数据分类入驻存储空间听候处理 7

2.1.1 基本数据分哪些类 7

2.1.2 什么是数据变量的存储空间、长度和取值范围 7

2.1.3 数据常量怎样表示 9

2.1.4 数据变量首次出场必须声明属何类型 11

2.1.5 怎样对数据变量进行访问 11

2.2 别名竟然登上大雅之堂 12

2.2.1 别名变量概念 12

2.2.2 别名变量怎样声明 13

2.2.3 用别名对变量进行访问例 13

2.3 循址访问是怎样的 14

2.3.1 “牧童遥指杏花村”的启发 14

2.3.2 指针变量概念 15

2.3.3 指针变量怎样声明和赋值 16

2.3.4 用指针所指对所指变量进行访问 17

2.3.5 基本类型变量的指针 20

2.4 对数据变量怎样保护 21

2.4.1 可用const声明常值数据变量 22

2.4.2 可在声明中用const对指针和别名进行限定 22

2.5 习题 24

第3章 数据的运算及简单输入/输出运算 27

3.1 运算符和表达式 27

3.1.1 运算符 27

3.1.2 表达式 28

3.2 算术运算符和表达式 28

3.2.1 基本算术运算符 28

3.2.2 除表达式a/b 28

3.2.3 取余表达式a%b 28

3.3 自增自减运算符和表达式 29

3.3.1 自增自减运算符 29

3.3.2 自增自减表达式 29

3.4 关系运算符和表达式 30

3.4.1 关系运算符 30

3.4.2 关系表达式 31

3.5 逻辑运算符和表达式 31

3.5.1 逻辑运算符 31

3.5.2 逻辑表达式 31

3.6 位运算符和表达式 32

3.6.1 位运算符 32

3.6.2 a|b是按位“或”表达式 33

3.6.3 其余的位运算表达式 33

3.7 条件运算符和表达式 33

3.7.1 条件运算符 33

3.7.2 条件表达式 33

3.8 赋值运算符和表达式 34

3.8.1 赋值运算符 34

3.8.2 赋值表达式 35

3.9 逗号运算符和表达式 35

3.9.1 逗号运算符 35

3.9.2 逗号表达式 36

3.10 基本数据混合运算时类型的转换 36

3.10.1 隐性类型转换 36

3.10.2 强迫类型转换 38

3.11 指针的增减运算 39

3.11.1 指针的增减是什么意思 39

3.11.2 指针的整数增减可比作走步 39

3.11.3 小小一例竟使多方受益 41

3.11.4 指针变量自增减也可比作走步 43

3.11.5 指针两种走步的比较 45

3.12 简单的输入/输出运算 46

3.12.1 输入流和输出流 46

3.12.2 提取运算符“>>”和插入运算符“<<” 46

3.12.3 提取表达式和插入表达式 46

3.12.4 基本数据的输入/输出 47

3.13 对输入/输出默认格式不如意怎么办 49

3.13.1 可用单项格式控制符实现如意的单项格式 49

3.13.2 用单项格式控制符实现单项格式例 49

3.14 习题 50

第4章 程序流程怎样控制 54

4.1 程序流程基本结构有哪几种 54

4.1.1 三种基本结构 54

4.1.2 两种特殊语句 54

4.2 选择结构是怎样的 54

4.2.1 if语句(又叫条件语句) 54

4.2.2 switch语句(开关语句) 58

4.3 循环结构是怎样的 60

4.3.1 盲童数苹果的故事 60

4.3.2 循环基本概念 61

4.3.3 while语句 61

4.3.4 do while语句 63

4.3.5 for语句 64

4.3.6 循环结构的嵌套——以鸡鸭天天下蛋为例 67

4.3.7 三种循环语句的比较 68

4.4 其他控制语句和函数 68

4.4.1 跳出状态的break语句 68

4.4.2 只中断本次循环的continue语句 69

4.4.3 收尾并终止程序的exit函数 70

4.5 习题 70

第5章 分担任务的得力助手——函数 74

5.1 函数是怎么回事 74

5.1.1 “自顶向下,逐步细化,函数分担”的模块化程序设计 74

5.1.2 函数怎样定义 74

5.2 怎样调用函数执行任务 76

5.2.1 函数原型声明 76

5.2.2 函数的调用 77

5.2.3 函数自己调用自己——递归调用 79

5.3 函数内外变量的作用域和生存期 81

5.3.1 作用域就是变量起作用的范围 81

5.3.2 变量的死活要看生存期 85

5.4 函数内外数据怎样传递 87

5.4.1 可通过函数参数进行数据传递 87

5.4.2 可用具有默认值的参数传递 91

5.4.3 可通过函数返回值进行数据传递 93

5.4.4 可通过全局变量进行数据传递 95

5.5 什么是内联函数、重载函数、函数模板和模板函数 95

5.5.1 内联函数 95

5.5.2 重载函数 96

5.5.3 函数模板和模板函数 97

5.6 指针也能对函数进行调用 98

5.6.1 指向函数的指针 98

5.6.2 函数指针变量的声明、初始化和赋值 98

5.6.3 可用函数指针调用函数 99

5.7 函数的多文件组织 100

5.7.1 模块化程序设计 100

5.7.2 源文件之间的访问 100

5.7.3 头文件 101

5.7.4 多文件组织怎样编译和链接 102

5.8 编译的预处理 103

5.8.1 #include指令 103

5.8.2 #define和#undef指令 104

5.9 条件编译 106

5.9.1 条件编译有三种形式 106

5.9.2 关于条件编译的说明 106

5.10 习题 107

第6章 同类型数据排成队——数组 112

6.1 一维数组 112

6.1.1 一维数组怎样声明和初始化 112

6.1.2 用下标表示形式对一维数组元素进行访问 114

6.1.3 可用数组名表示一维数组元素 116

6.1.4 可用一维数组名调用函数处理一维数组 117

6.2 二维数组 120

6.2.1 二维数组怎样声明和初始化 120

6.2.2 用下标表示形式对二维数组元素进行访问 122

6.2.3 可用数组名表示二维数组元素 123

6.2.4 可用二维数组名调用函数处理二维数组 126

6.3 对字符串怎样处理 131

6.3.1 可用一维字符数组处理字符串 131

6.3.2 可用库函数处理字符串 133

6.4 对字符串组怎样处理 135

6.4.1 可用一维字符指针数组处理字符串组 135

6.4.2 可用一维字符指针数组名调用函数处理字符串组 136

6.5 合适的存储区想要就能有吗 138

6.5.1 可用new运算符申请动态配给存储区 138

6.5.2 可用delete运算符撤放动态配给的存储区 139

6.5.3 可给临时输入的姓名字符串动态配给“经济适用房” 140

6.6 应用范例——建立姓名录排序和输出 141

6.6.1 问题的提出 141

6.6.2 分析 141

6.6.3 源程序及说明 142

6.7 习题 144

第7章 枚举类型与结构类型 148

7.1 枚举类型是怎样的 148

7.1.1 枚举类型的定义 148

7.1.2 枚举型变量的声明、初始化和赋值 149

7.1.3 可调用函数对枚举型变量输入和输出 149

7.1.4 “酒楼点菜”一枚举元素的组合状态 150

7.2 应用范例——C++用格式状态字表明输入/输出格式的组合状态 151

7.2.1 将各种输入/输出格式定义为各个枚举元素 151

7.2.2 用格式状态字flag表明多项格式的组合状态 152

7.2.3 用格式状态字调用组合格式控制符实现多项格式的组合采用 152

7.3 结构类型是怎样的 154

7.3.1 结构类型的定义 154

7.3.2 结构型变量的声明、初始化和赋值 155

7.3.3 可对结构型变量的成员进行访问 156

7.3.4 可用结构型数组处理结构型变量 158

7.4 什么是链表 162

7.4.1 链表怎样组成 162

7.4.2 怎样对链表结点进行访问 163

7.4.3 对链表进行操作的必做预习题 164

7.5 可调用函数对链表进行各项   操作 165

7.5.1 调用函数把一个结点插入顺序链表 165

7.5.2 调用函数建立一条有序新链表 167

7.5.3 调用函数输出链表各结点数据 168

7.5.4 调用函数删除链表上具有指定值的一个结点 168

7.5.5 调用函数撤放链表全部结点动态配给的存储空间 169

7.6 应用范例——调用函数建立有序链表和删除指定结点 170

7.6.1 问题的提出 170

7.6.2 分析 170

7.6.3 源程序及说明 170

7.7 用typedef可定义某类型的又一个标识符 174

7.7.1 用typedef定义某类型又一个标识符例 174

7.7.2 用typedef定义某类型又一个标识符的方法步骤 174

7.8 习题 174

第8章 类和对象 176

8.1 从面向过程到面向对象 176

8.2 类具体是怎样的 177

8.2.1 类的定义 177

8.2.2 对类内各成员访问的控制规则 178

8.2.3 类的引用性声明 179

8.2.4 面向对象程序设计的多文件组织 179

8.3 对象具体是怎样的 179

8.3.1 对象的声明 179

8.3.2 同类对象之间可以整体赋值 180

8.3.3 对对象成员的访问 180

8.3.4 地下工作者——本类指针this 182

8.3.5 对对象数据成员置值的两种方法 184

8.4 迎接对象诞生的函数——构造函数 184

8.4.1 构造函数的作用特点和定义形式 184

8.4.2 构造函数的重载 186

8.4.3 构造函数和new运算符 187

8.5 送别对象撤销的函数——析构函数 188

8.5.1 析构函数作用特点和定义形式 189

8.5.2 一定要定义析构函数吗 190

8.6 非要定义构造函数和复制构造函数吗 191

8.6.1 默认的构造函数和复制构造函数 191

8.6.2 浅复制和深复制 192

8.7 类属成员——类的静态成员 193

8.7.1 静态数据成员 193

8.7.2 静态成员函数 194

8.8 类可结交“亲密好友” 195

8.8.1 友元的概念 195

8.8.2 运用友元的一个例题 196

8.8.3 友元声明的一般形式 197

8.8.4 关于友元的几点说明 198

8.9 什么叫类嵌套 198

8.9.1 类嵌套关系 198

8.9.2 嵌套类实例 198

8.9.3 嵌套类构造函数定义的一般形式 199

8.10 类模板和模板类 200

8.10.1 什么叫类模板和模板类 200

8.10.2 类模板怎样定义 200

8.10.3 类模板怎样使用 201

8.11 应用范例——面向对象构建学生成绩链表 202

8.11.1 问题的提出 202

8.11.2 类设计 203

8.11.3 创建链表的思路 203

8.11.4 源程序及说明 203

8.12 习题 206

第9章 继承与派生 208

9.1 继承与派生是怎么回事 208

9.1.1 继承、派生、基类、派生类概念 208

9.1.2 基类和派生类的构成形式 208

9.1.3 派生类成员的组成和身份的确定 209

9.2 派生类 211

9.2.1 举个派生类简例 211

9.2.2 派生类的定义形式 212

9.2.3 派生类成员存储空间、身份及访问 212

9.2.4 派生类的构造函数和析构函数 213

9.3 对派生类中同名成员二义性的处理 214

9.3.1 类名加域运算符::处理法 215

9.3.2 同名覆盖原理 217

9.3.3 对共同基类多级多脉继承中同名成员的处理 217

9.3.4 用虚基类避免一个数据多种版本 219

9.4 类的赋值兼容 221

9.4.1 公有派生类对象可以顶替基类对象 221

9.4.2 公有派生类对基类的赋值兼容 222

9.4.3 公有派生类对象怎样顶替基类对象 222

9.4.4 类的赋值兼容规则的实质 224

9.5 应用范例——半工半读学生信息管理系统 226

9.5.1 问题的提出 226

9.5.2 类设计 226

9.5.3 源程序及说明 227

9.5.4 源程序呼喊改进 230

9.5.5 虚函数的提出 231

9.6 习题 232

第 10章 多态性 234

10.1 什么叫做静态联编和动态联编 234

10.2 虚函数是怎么回事 234

10.2.1 虚函数的定义 234

10.2.2 直接访问同名成员函数时的接访规则 235

10.2.3 虚函数在实现动态联编多态性中的运用例 237

10.2.4 虚析构函数 238

10.3 什么是纯虚函数和抽象类 239

10.3.1 纯虚函数 239

10.3.2 抽象类 240

10.3.3 抽象基类例 240

10.4 运算符重载是怎样的 241

10.4.1 运算符重载概念 241

10.4.2 运算符重载要求 242

10.4.3 运算符重载函数 242

10.5 怎样用成员函数实现运算符重载 242

10.5.1 成员函数实现双目运算符重载 242

10.5.2 成员函数实现单目运算符重载 245

10.6 怎样用友元函数实现运算符重载 247

10.6.1 友元函数实现双目运算符重载 247

10.6.2 友元函数实现单目运算符重载 248

10.7 对象运算中怎样进行类型转换 250

10.7.1 转换构造函数 250

10.7.2 类型转换函数 251

10.7.3 对象运算中类型转换例 251

10.8 应用范例——类型转换应用于时间运算中 253

10.8.1 问题的提出 253

10.8.2 设计思路 253

10.8.3 源程序及说明 253

10.9 习题 254

第 11章 输入/输出流类体系 256

11.1 什么是流类和流 256

11.1.1 流类概念(端口、模式和成员函数) 256

11.1.2 缓冲流 257

11.1.3 流类体系 257

11.2 基本流类体系是怎样的 257

11.2.1 基本流类体系组成 257

11.2.2 基本流类体系各组成部分简介 258

11.3 什么是I/O标准流 258

11.3.1 I/O标准流概念 258

11.3.2 I/O标准流的端口和模式 258

11.3.3 常用于输入的成员函数 259

11.3.4 常用于输出的成员函数 261

11.3.5 用于格式控制的成员函数 261

11.3.6 用于检验出错的成员函数 263

11.4 文件流类体系是怎样的 264

11.4.1 文件流类体系组成 264

11.4.2 文件流类体系各组成部分简介 265

11.5 什么是I/O文件流 265

11.5.1 I/O文件流概念 265

11.5.2 I/O文件流的建立,端口和模式的确定 265

11.5.3 用于建立和关闭I/O文件流的成员函数 267

11.5.4 I/O文本文件流常用的成员函数 267

11.5.5 I/O二进制文件流常用的成员函数 272

11.6 应用范例——文件中建立平方根表 276

11.6.1 问题的提出 276

11.6.2 分析 276

11.6.3 源程序及说明 276

11.7 习题 277

第 12章 简述VC++6.0编程环境的上机操作 279

12.1 编制实现单文件应用程序的方法 279

12.1.1 编制一个简单程序 279

12.1.2 为简单程序修改错误 282

12.2 程序设计中的多文件组织 284

12.3 怎样查找程序运行中的错误 286

12.3.1 查找程序运行的错误点 286

12.3.2 VC6.0有哪些调试工具 286

12.3.3 神奇的单步调试 288

12.4 实验题 290

附录A ASCII码表 291

附录B 习题参考答案 292

详情

本书共分十一章(详见目录)。内容包括概论、基本数据、别名与指针、数据的运算及简单输入/输出运算、程序的流程控制、函数、数组、枚举类型与结构类型、类和对象、继承与派生、多态性、输入/输出流类体系等。

图书摘要

相关图书

代码审计——C/C++实践
代码审计——C/C++实践
CMake构建实战:项目开发卷
CMake构建实战:项目开发卷
C++ Templates(第2版)中文版
C++ Templates(第2版)中文版
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
Qt 6 C++开发指南
Qt 6 C++开发指南

相关文章

相关课程