内容简介
第一部分 C++基础:类C特性
第一章 C语言概述
1.1 C语言的起源
1.2 C语言是中级语言
目录
1.3 C语言是结构化语言
1.4 C语言是程序员的语言
1.5 C语言的程序结构
1.6 库和连接
1.7 分离编译
2.1 五种基本数据类型
第二章 表达式
2.2 修饰基本类型
2.3 标识符命名
2.4 变量
2.4.1 变量在哪里说明
2.4.2 局部变量
2.4.3 形式参数
2.4.4 全局变量
2.5 存取修饰符
2.5.1 const
2.6 存储分类符
2.6.1 外部的
2.5.2 volatile
2.6.2 静态变量
2.6.3 寄存器变量
2.7 变量初始化
2.8 常量
2.8.1 十六进制和八进制常量
2.8.2 串常量
2.8.3 反斜线字符常量
2.9 运算符
2.9.1 赋值运算符
2.9.2 赋值中的类型转换
2.9.4 算术运算符
2.9.3 多重赋值
2.9.5 增量和减量运算符
2.9.6 关系和逻辑运算符
2.9.7 位操作符
2.9.8 ?操作符
2.9.9 指针操作符&和*
2.9.10 编译时操作符sizeof
2.9.11 逗号操作符
2.9.12 点(.)和箭头(-〉)操作符
2.9.13 方括号[]和括号()操作符
2.9.14 关于优先级的小结
2.10.1 求值顺序
2.10.2 表达式中的类型转换
2.10 表达式
2.10.3 构成符
2.10.4 空格与括号
2.10.5 C语言中的简写形式
第三章 C语言的语句
3.1 C语言的真值和假值
3.2 选择语句
3.2.1 if语句
3.2.2 嵌套的if语句
3.2.3 多重嵌套的if语句:阶梯型if-else-if语句
3.2.4 操作符?的替代
3.2.6 switch开关语句
3.2.5 条件表达式
3.2.7 嵌套的switch语句
3.3 迭代语句
3.3.1 for循环
3.3.2 for循环的变化形式
3.3.3 无限循环
3.3.4 没有循环体的for循环
3.3.5 while循环
3.3.6 do-while循环
3.4 转移语句
3.4.1 return语句
3.4.2 goto语句
3.4.3 break语句
3.4.4 exit语句
3.4.5 continue语句
3.5 表达式语句
3.6 块语句
第四章 数组和字符串
4.1 一维数组
4.2 产生指向数组的指针
4.3 向函数传递一维数组
4.4 字符串
4.5 二维数组
4.5.1 字符串数组
4.7 带下标的指针
4.6 多维数组
4.8 数组初始化
4.8.1 变长数组的初始化
4.9 棋盘游戏实例
第五章 指针
5.1 指针是什么
5.2 指针变量
5.3 指针运算符
5.4 指针表达式
5.4.1 指针赋值
5.4.2 指针运算
5.4.3 指针比较
5.5 指针和数组是紧密相联的
5.5.1 指针数组
5.6 多级间址
5.7 指针的初始化
5.8 指向函数的指针
5.9 C语言的动态分配函数
5.10 指针应用中的某些问题
第六章 函数
6.1 函数的一般形式
6.2 函数作用域的规则
6.3 函数变元
6.3.2 引用调用的建立
6.3.1 传值调用与引用调用
6.3.3 用数组调用函数
6.4 传给main()的变元argc与argv
6.5 返回语句
6.5.1 从函数返回
6.5.2 返回值
6.6 返回非整型值的函数
6.7 函数原型
6.8 返回指针
6.9 void类型的函数
6.10 main()返回什么?
6.11 递归
6.13 传统的与现代的函数说明
6.12 说明变长参数表
6.14 实现问题
6.14.1 参数和通用函数
6.14.2 效率
第七章 结构、联合、枚举和用户定义的类型
7.1 结构
7.1.1 引用结构元素
7.1.2 结构赋值
7.2 结构数组
7.3 向函数传递结构
7.3.1 向函数传递结构元素
7.3.2 向函数传递完整结构
7.4 结构指针
7.4.1 结构指针的应用
7.5 结构中的数组和结构
7.6 位域
7.7 联合
7.8 枚举
7.9 用sizeof增强移植性
7.10 类型定义typedef
第八章 控制台I/O
8.1 一个重要的应用说明
8.2 读写字符
8.2.1 getchar()的有关问题
8.3 读写字符串
8.2.2 getchar()的替代
8.4 格式化的控制台I/O
8.5 printf()
8.5.1 打印字符
8.5.2 打印数字
8.5.3 显示一个地址
8.5.4 %n描述符
8.5.5 格式化代码修饰符
8.5.6 最小域宽描述符
8.5.7 精度描述符
8.5.10 *和#修饰符
8.5.9 处理其它数据类型
8.5.8 调整输出
8.6 scanf()
8.6.1 格式说明符
8.6.2 输入数字
8.6.3 输入无符号整数
8.6.4 用scanf()读单个字符
8.6.5 读字符串
8.6.6 读入地址
8.6.7 %n描述符
8.6.8 使用一个扫描集
8.6.10 控制串中的非空白符
8.6.11 必须向scanf()传递地址
8.6.9 丢弃不期望的空白符
8.6.12 格式化修饰符
8.6.13 压缩输入
第九章 ANSIC的标准文件I/O
9.1 历史回顾
9.2 流和文件
9.2.1 流
9.2.2 文件
9.3 文件系统基础
9.3.1 文件指针
9.3.2 打开一个文件
9.3.5 读一个字符
9.3.4 写一个字符
9.3.3 关闭一个文件
9.3.6 使用fopen(),getc(),putc()和fclose()
9.3.7 使用feof()
9.3.8 用fputs()和fgets()操作字符串
9.3.9 rewind()
9.3.10 ferror()
9.3.11 删除文件
9.3.12 清除一个流
9.4 fread()和fwrite()
9.4.1 使用fread()和fwrite()
9.5 freek()和随机存取I/O
9.6 fprintf()和fscanf()
9.7.1 控制台I/O连接
9.7 标准流
9.7.2 使用freopen()重定向标准流
第十章 C语言的预处理程序和注释
10.1 C语言的预处理程序
10.2 #define
10.3 #error
10.4 #include
10.5 条件编译指令
10.5.1 #if,#else,#elif,和#endif
10.5.2 #ifdef和#ifndef
10.6 #undef
10.7 #line
10.8 #pragam
10.9 #和##预处理操作符
10.10 预定义的宏名
10.11 注释
第十一章 C++概述
11.1 C++的起源
第二部分 C++的专有特征
11.2 面向对象的程序设计是什么
11.2.1 对象
11.2.2 多态性
11.2.3 继承性
11.3 C++的程序设计风格
11.4 C++的类
11.5 函数重载
11.7 继承性
11.6 运算符重载
11.8 构造函数和析构函数
11.9 C++的关键字
11.10 C++程序的一般结构
第十二章 类和对象
12.1 类
12.2 结构和类
12.3 联合和类
12.4 友元函数
12.5 内联函数
12.6 在类中定义内联函数
12.7 参数化的构造函数
12.8 静态类成员
12.8.1 静态数据成员
12.8.2 静态成员函数
12.9 何时执行构造函数和析构函数
12.10 嵌套类
12.11 作用域分辨符
12.12 局部类
12.13 向函数传递对象
12.14 返回对象
12.15 对象赋值
第十三章 数组、指针和引用
13.1 对象数组
13.2 指向对象的指针
13.3 this指针
13.4 指向派生类型的指针
13.5 指向类成员的指针
13.6.1 引用参数
13.6 引用
13.6.2 向对象传递引用
13.6.3 返回引用
13.6.4 独立引用
13.6.5 对引用的限制
13.7 格式问题
13.8 C++的动态分配符
13.8.1 分配对象
14.1 函数重载
第十四章 函数和运算符重载
14.1.1 函数重载和二义性
14.2 重载的过去和现在
14.3 重载构造函数
14.4 求重载函数的地址
14.5 运算符重载
14.5.1 创建成员operator函数
14.6 使用friend重载运算符
14.6.1 使用friend重载++和--
14.6.2 friend operator函数增加了灵活性
20.1.1 正确使用缺省变元
14.7 重载的new和delete
14.8 重载某些特殊运算符
14.8.1 重载[]
14.8.2 重载()
14.8.3 重载-〉
14.9 重载逗号运算符
第十五章 继承性
15.1 基类存取控制
15.1.1 继承和受保护成员
15.2 继承多个基类
15.3 构造函数、析构函数和继承
15.3.1 何时执行构造函数和析构函数
15.3.2 向基类构造函数传递参数
15.4 授权存取
15.5 虚基类
第十六章 虚函数和多态性
16.1 虚函数
16.1.1 继承虚属性
16.1.2 虚函数的层次性
16.2 纯虚函数
16.2.1 抽象类
16.3 使用虚函数
16.4 早期和后期联编
17.2 基本的流类
第十七章 C++的I/O系统基础
17.1 C++的流
17.3.1 用ios成员格式化
17.2.1 C++的预定义流
17.3 格式化的I/O
17.3.2 设置格式标志
17.3.3 清除格式标志
17.3.4 setf()的重载形式
17.3.5 检查格式标志
17.3.6 设置所有标志
17.3.7 使用width()、precision()和fill()
17.3.8 用操纵符格式化I/O
17.4 重载〈〈和〉〉
17.4.1 创建自己的插入符
17.4.2 创建自己的提取符
17.5 创建自己的操纵符函数
17.5.1 创建无参数的操纵符
17.5.2 创建带参数的操纵符
17.6 关于老式流类库的简短说明
第十八章 C++文件I/O
18.1 fstream.h和文件类
18.2 打开和关闭文件
18.3 读和写文本文件
18.4 二进制I/O
18.4.1 put()和get()
18.4.2 read()和write()
18.6 getline()
18.5 另外的get()函数
18.7 跟踪EOF
18.8 ignore()函数
18.9 peek()和putback()
18.10 flush()
18.11 随机存取
18.12 I/O状态
18.13 定制的I/O和文件
19.2 创建基于数组的输出流
19.1 基于数组的类
第十九章 基于数组的I/O
19.3 使用数组作输入
19.4 使用二进制I/O
19.5 基于数组的输入/输出流
19.6 数组内随机存取
19.7 使用动态数组
19.8 操纵符和基于数组的I/O
19.9 定制的提取符和插入符
19.10 基于数组格式的用途
第二十章 问题和高级论题
20.1 缺省函数变元
20.2 创建转换函数
20.3 拷贝构造函数
20.4 动态初始化
20.5 常量和可变成员函数
20.6 使用关键字asm
20.7 连接说明
20.8 以前的重载
20.9 C和C++之间的区别
20.10 C++的发展方向
第三部分 C++的一些应用
第二十一章 字符串类
21.1 定义字符串类型
21.2 字符串类
21.3 构造函数和析构函数
21.4 字符串I/O
21.5 赋值函数
21.6 连接
21.7 子字符串减法
21.8 关系运算符
21.9 各种字符串函数
21.10 完整的字符串类
21.11 字符串的使用
第二十二章 弹出式窗口类
22.1 弹出式窗口
22.2.1 PC视频系统
22.2 创建一些视频支持函数
22.2.2 存取BIOS
22.2.3 确定视频RAM的地址
22.2.4 写视频RAM
22.2.5 置光标
22.3 窗口类
22.4 显示和移去窗口
22.5 窗口I/O
22.6 一个完整的窗口系统
22.7 修改
第二十三章 链表类
23.1 双向链表类
23.1.1 store()函数
23.1.2 remove()函数
23.1.3 显示表
23.1.4 改变和查找表中的对象
23.1.5 完整的dblink类和样板程序
23.2 定义一个样板双向链表基类
23.2.1 双向链表基类
23.2.2 定义说明双向链表类
23.3 其它实现方法
附录A 一些公共类
A.1 复数类
A.2 BCD类