目录 1
第一章 Visual C++的安装和使用 1
1.1 Visual C++的安装 1
1.1.1 进行Visual C++安装之前的准备工作 1
1.1.2 系统的安装 2
1.2 Visual C++的使用 3
1.2.1 程序的编辑及保存 3
1.2.2 程序的编译及运行 4
第二章 C++概述 6
2.1 输出流 6
2.2 格式输出 7
2.3 标准错误输出流 8
2.4 标准输入流 8
2.5 C++语言程序中的程序注释方法 9
2.6 函数原型说明 9
2.7 变量声明 11
2.8 作用域分辨算符 12
2.9 枚举类型 13
2.10 const修饰符 14
2.11 缺省函数参数 15
2.12 内联扩展函数 16
2.13 重载函数 17
2.14 链接说明 18
第三章 引用 21
3.1 引用的概念 21
3.2 初始化引用型变量 22
3.3 引用与指针的区别及相似点 22
3.4 引用作为函数参数 23
3.5 引用作为返回值 25
第四章 C++中的类基础 27
4.1 C语言中结构是什么? 27
4.2 在C++中如何声明类? 28
4.4 析构函数 29
4.3 构造函数 29
4.5 其它成员函数 30
4.6 声明对象和对象使用 31
4.7 public、private和信息封装 32
4.8 缺省构造函数 34
4.9 成员函数与引用 35
4.10 const对象 36
4.11 类嵌套 37
4.11.1 一个类嵌套例子 37
4.11.2 成员对象初始串列 38
4.11.3 const对象成员 39
4.11.4 const内部类型成员 39
4.12 对象的生命周期 40
第五章 C++中类的使用 43
5.1 友元 43
5.1.1 一个例子 43
5.1.2 友元类 44
5.1.3 友元函数 47
5.2 静态成员 47
5.2.1 一个例子 47
5.2.2 静态数据成员 49
5.2.3 静态成员函数 50
5.3 自由存储 51
5.3.1 自由存储 51
5.3.2 new操作符 51
5.3.3 delete操作符 52
5.3.4 内部类型与new、delete操作符 52
5.4 赋值操作符 53
5.4.1 一个例子 53
5.4.2 对象赋值 55
5.4.3 赋值操作符重载 55
5.5.1 copy构造函数的背景 57
5.5 copy构造函数 57
5.5.2 其它调用copy构造函数的场合 58
5.5.3 赋值操作符与copy构造函数的区别 59
5.6 this指针 59
5.6.1 this指针是什么? 60
5.6.2 this指针与赋值操作符 60
5.6.3 使用this指针应注意的问题 62
5.7 对象数组 62
5.7.1 结构及结构数组 62
5.7.2 对象及对象数组 63
5.7.3 自由存储与对象数组 64
第六章 类继承 67
6.1 基类与派生类 67
6.1.1 C语言中处理相关类的方法 68
6.1.2 C++语言中处理相关类的方法 69
6.1.3 派生类的定义方法 70
6.1.4 protected关键字 71
6.1.5 类层次 72
6.2 基类及派生类的使用 73
6.2.1 公用基类与私用基类 73
6.2.2 资料隐藏和继承的关系 75
6.2.3 派生类中成员的重定义 76
6.3 派生类的构造函数 77
6.3.1 派生类构造函数定义 78
6.3.2 派生类构造函数的调用顺序 78
6.3.3 基类构造函数名称的省略 80
6.3.4 基类构造函数的定义 80
6.3.5 基类构造函数调用的省略 80
6.4 基类与派生类之间的转换 82
6.5 多重继承 84
6.5.1 多重继承的例子 84
6.5.2 多重继承下的派生类定义 84
6.5.3 多重继承下派生类构造函数的设计 85
第七章 虚拟函数与多态性 87
7.1 静态联编与动态联编 87
7.1.1 静态联编 87
7.1.2 动态联编 88
7.1.3 类型标识在静态联编下的使用 90
7.2 虚拟函数 94
7.2.1 虚拟函数的声明 94
7.2.2 虚拟函数的调用 96
7.2.3 对虚拟函数非动态联编方式的调用 97
7.2.4 虚拟函数的资料封装 99
7.2.5 怎样实现虚拟函数 101
7.3 纯虚拟函数 103
7.3.1 纯虚拟函数的定义 103
7.3.2 一个纯虚拟函数例子 103
7.4 虚拟析构函数 107
7.3.3 使用纯虚拟函数的一些限制 107
7.5 虚拟基类 110
7.5.1 虚拟基类定义的一般格式 111
7.5.2 虚拟基类继承关系下派生类的构造函数 112
第八章 运算符重载与转换函数 115
8.1 运算符重载 115
8.1.1 C语言中的运算符重载 115
8.1.2 C++语言中的一个数字类的例子 116
8.1.3 为Complex类定义重载运算符成员函数 118
8.1.4 重载运算符作为友元函数 121
8.2 运算符重载的注意事项 124
8.2.1 重载运算符的一些限制 125
8.2.2 重载运算符时必须遵守的原则 126
8.2.3 几点提示 127
8.3 重载下标运算符 128
8.4.1 重载new与delete操作符的方法 130
8.4 重载new与delete操作符 130
8.4.2 重载new操作符函数的附加函数 131
8.4.3 为类设计特殊的new与delete操作符重载函数 132
8.4.4 new、delete与构造函数、析构函数 134
8.5 类转换 135
8.5.1 C++类型转换应用的场合 135
8.5.2 基本数据类型与用户自定义数据类型的相互转换 137
8.5.3 用户自定义数据类型到其它数据类型的转换 139
8.5.4 二义性及其解决方法 141
第九章 Visual C++类库介绍 146
9.1 类库的一般介绍 146
9.1.1 Microsoft基类库的特色 146
9.1.2 应用程序框架 147
9.2 通用类 149
9.2.1 内存管理 150
9.2.3 字符串 152
9.2.2 日期与时间 152
9.3 结构类 155
9.3.1 文档类 155
9.3.2 视窗类 157
9.3.3 用户接口类 159
9.3.4 应用程序类 160
9.4 OLE类 160
9.4.1 OLE的一些基本概念 161
9.4.2 OLE类 162
9.4.3 客户程序的设计 163
9.4.4 设计服务程序 164
9.5 可视对象类 164
9.6 CObject类介绍 164
9.6.1 由CObject派生新类的步骤 165
9.6.2 访问对象的运行时类信息 167
10.1.1 指针 169
10.1 标准模式介绍 169
第十章 程序内存模式选择 169
10.1.2 标准内存模式 171
10.1.3 小模式 172
10.1.4 微型模式 172
10.1.5 中模式 173
10.1.6 紧凑模式 173
10.1.7 大模式 175
10.1.8 巨型模式 175
10.1.9 空指针 176
10.1.10 标准模式的选择 177
10.2 混合模式 177
10.2.1 变量定义 178
10.2.2 near函数和far函数 179
10.2.3 指针转换 180
10.3.1 代码指针大小的设定 181
10.3 自定义内存模式 181
10.3.2 数据指针大小的设定 182
10.3.3 段设置 182
10.4 based指针 187
10.4.1 based指针 187
10.4.2 基址数据的分配 190
10.5 based地址与函数 192
10.6 虚拟存贮管理 193
10.7 类的内存模式 193
10.7.1 环绕内存模式 194
10.7.2 修改环绕内存模式 194
10.7.3 重载this指针 195
10.7.4 指定返回对象的寻址方式 196
10.7.5 虚拟函数表指针 197
10.8 new、delete与内存模式 197
10.8.1 new操作符 197
10.8.2 delete操作符 198
10.8.3 _set_new_handler函数 199
10.9 成员函数的基址寻址 199
第十一章 嵌入汇编 201
11.1 嵌入汇编介绍 201
11.2 __asm关键字 201
11.3 嵌入汇编使用方法 202
11.3.1 嵌入汇编语言的特色 202
11.3.2 __asm块中C或C++语言成分的使用 204
11.3.3 寄存器的使用方法 207
11.3.4 浮点数指令的使用方法 208
11.3.5 标号的使用方法 208
11.3.6 C或C++函数的调用 209
11.3.7 定义__asm块作为宏 210
11.3.8 程序优化 211
12.1.1 关于命名规则方面的要求 212
12.1 混合语言编程的协议 212
第十二章 混合语言编程 212
12.1.2 关于调用规则方面的要求 213
12.1.3 关于参数传递规则方面的要求 214
12.1.4 程序的编译和链接 215
12.2 C语言程序调用其它高级语言 216
12.2.1 C调用Basic 217
12.2.2 C调用FORTRAN 218
12.2.3 C调用Pascal 220
12.3 C语言程序调用汇编语言 222
12.3.1 过程的设置 223
12.3.2 进入过程 224
12.3.3 分配局部数据 224
12.3.4 保存寄存器 225
12.3.5 存取参数 225
12.3.6 返回值 227
12.4 C++语言程序调用其它高级语言 228
12.3.7 退出过程 228
12.5 混合语言编程中的数据处理 229
12.5.1 缺省的命名及调用协议 229
12.5.2 数字数据表示方法 230
12.5.3 字符串 230
12.5.4 数组 233
12.5.5 数组的声明及数组下标 234
12.5.6 结构、记录和用户定义数据类型 235
12.5.7 外部数据 235
12.5.8 指针和地址变量 236
12.5.9 公共块 236
12.5.10 可变数的参数 238
第十三章 编写可移植C++程序的一些考虑 239
13.1 硬件与可移植性 239
13.1.1 基本数据类型及其存贮位数 239
13.1.2 结构或联合中各个域的存贮顺序及其对齐方式 242
13.1.3 算术运算模式 246
13.1.4 指针 246
13.1.5 字符集 248
13.2 编译程序与可移植性 248
13.2.1 符号扩展 249
13.2.2 右移位操作 250
13.2.3 标识符的长度和大小写 250
13.2.4 寄存器变量 251
13.2.5 可变个数参数的函数 251
13.2.6 求值顺序 252
13.2.7 带副作用的函数或宏的参数 252
13.2.8 运行环境的差别 253
13.3 数据文件的可移植性 253
13.4 Visual C++中专门的可移植性考虑 253
13.5 Visual C++中的字节顺序 253