《Borland C++3.1编程指南》求取 ⇩

引言1

0.1 为什么使用OOP方法?1

目录1

0.2 本书结构2

0.3 本书的描述2

0.4 软硬件需求3

第一部分 用Borland C++进行面向对象的程序设计3

第1章 基础知识3

1.1 Borland C++项目文件的结构3

1.1.1 头文件3

1.1.2 一个完整的样本程序4

1.2.1 作用域8

1.2 变量8

1.2.2 类型10

1.2.3 存储类10

1.2.4 const限定符10

1.2.5 Volatile限定符12

1.2.6 语句13

1.2.7 函数21

1.2.8 指针和引用26

1.2.9 指针、引用与const连用28

1.2.10 提高部分29

第2章 对象和类41

2.1 定义类41

2.1.2 类体42

2.1.1 类标识符42

2.2 使用类43

2.2.1 封装43

2.2.2 类存取控制44

2.2.3 类私有成员45

2.2.4 类公有成员46

2.2.5 类保护成员46

2.2.6 类对象的存储类47

2.2.7 类作用域47

2.2.8 空类48

2.2.9 类嵌套48

2.2.11 不完全的类声明50

2.2.10 类的实例化50

2.3 使用数据成员51

2.3.1 静态数据成员51

2.3.2 private static数据成员53

2.3.3 类对象用作数据成员54

2.3.4 指针数据成员56

2.3.5 指向类数据成员的指针56

2.3.6 指向对象数据成员的指针57

2.4 使用成员函数58

2.4.1 简单成员函数59

2.4.2 静态成员函数59

2.4.3 Const成员函数60

2.4.4 volatile成员函数61

2.4.5 内联成员函数61

2.4.6 带有const this的成员函数62

2.4.7 带有volatile this的成员函数63

2.4.8 特殊类函数64

2.4.9 构造函数65

2.4.10 析构函数70

2.4.11 友元关键字72

2.4.12 友元的性质73

2.5 提高部分74

2.5.1 成员函数指针74

2.5.2 数组和类76

2.5.3 成员函数调用的分析81

2.5.4 类模板82

2.5.5 函数模板89

3.2 继承性92

第3章 继承性92

3.1 可复用性92

3.3 继承的作用93

3.4 C++继承性的局限性93

3.5 关于继承的不同观察角度94

3.6 单一继承94

3.6.1 何时继承94

3.6.2 不能被继承的成分95

3.6.3 基类的存取限定符95

3.6.4 可被继承的类96

3.6.5 传递给基类的参数97

3.6.6 构造函数的调用顺序98

3.6.8 种子类99

3.6.7 析构函数的调用顺序99

3.6.9 派生类的类型转换101

3.6.10 作用域的分辨102

3.6.11 性质扩展105

3.6.12 性质约束107

3.6.13 使用单一继承的例子108

3.6.14 函数闭包110

3.7 多重继承114

3.7.1 声明多基类继承的类115

3.7.2 调用基类构造函数116

3.7.3 使用虚基类116

3.7.5 调用析构函数118

3.7.6 使用类型转换118

3.7.4 混合使用虚基类和非虚基类118

3.7.7 保持基类函数的正确性120

3.7.8 多继承中作用域分辨的应用121

3.7.9 跟踪内存122

3.8 提高部分123

3.8.1 运行时刻的考虑123

3.8.2 进入对象内部123

3.8.3 被继承的Debugger类126

第4章 重载130

4.1 重载的原因130

4.2 函数重载131

4.2.1 非成员重载函数131

4.2.2 重载成员函数132

4.2.3 类等级中的重载函数133

4.2.4 重载不是覆盖134

4.2.5 作用域分辨134

4.2.6 参数匹配135

4.2.7 重载构造函数136

4.2.8 一些特殊情况137

4.2.9 通过重载定义用户转换规则138

4.2.10 重载静态成员函数141

4.3 操作符重载141

4.3.1 操作符用作函数调用143

4.3.2 重载操作符用作成员函数143

4.3.3 操作符成员函数的几个注意点145

4.3.4 重载操作符用作友元函数145

4.3.5 赋值操作符147

4.3.6 函数调用操作符()149

4.3.7 下标操作符151

4.3.8 操作符重载限制152

4.3.9 操作符的作用域分辨152

4.4 提高部分153

4.4.1 名字分裂的规则153

4.4.2 重载new和delete156

4.4.3 前缀和后缀操作符158

第5章 多态性161

5.1 先期和迟后联编161

5.2 C++是一种混合语言162

5.3 虚函数162

5.3.1 函数覆盖163

5.3.2 空的虚函数164

5.3.3 改善了的类用户接口165

5.3.4 抽象类166

5.3.5 虚函数的局限性169

5.3.6 虚友元169

5.3.7 虚操作符170

5.3.8 虚构造函数172

5.3.9 虚析构函数172

5.4 多态性的例子172

5.5 作用域分辨使多态性失效175

5.6 虚函数和非虚函数连用176

5.7 vptr和vtab结构的内存布局177

5.8 虚函数可以不被覆盖178

5.9 确定是否使用虚函数179

5.10 私有虚函数180

5.11 提高部分182

5.11.1 多态性机制182

5.11.2 单一继承中的多态性182

5.11.3 多重继承中的多态性186

5.11.4 嵌入式虚函数189

5.11.5 基类中调用多态函数192

5.11.6 虚函数和分类等级194

5.11.7 构造函数中调用虚函数196

第6章 流198

6.1 Stdio方法的缺点198

6.3 广义的流199

6.2 C++流199

6.4 内部类型的标准I/O流200

6.4.1 char和char*类型的I/O操作202

6.4.2 int和long类型的I/O操作203

6.4.3 float和double类型的I/O操作204

6.4.4 用户类的I/O操作204

6.5 操作函数206

6.5.1 使用数制(基)操作函数208

6.5.2 设置和清除格式标志209

6.5.3 改变域宽及填充209

6.5.4 使用格式操作函数210

6.6 文件I/O的流实现211

6.6.1 文本文件输入212

6.6.2 流的错误检测213

6.6.3 文本文件输出214

6.6.4 二进制文件输入216

6.6.5 二进制文件输出217

6.7 内存格式化218

6.8 将打印机看作流220

6.9 提高部分221

6.10 内部流类型221

6.11 streambuf等级221

6.11.1 类streambuf222

6.11.2 从类streambuf中派生类229

6.11.3 类strstreambuf232

6.11.4 类filebuf237

6.12 ios等级242

6.12.1 类ios243

6.12.2 类istream254

6.12.3 类ostream260

6.12.4 类iostream263

6.12.5 类istream_withassign266

6.12.6 类ostream_withassign268

6.12.7 类iostream_withassign269

6.12.8 类fstreambase270

6.12.9 类strstreambase273

6.12.10 类ifstream275

6.12.11 类ofstream277

6.12.12 类fstream280

6.12.13 类istrstream282

6.12.14 类ostrstream285

6.12.15 类strstream289

6.12.16 流中二进制文件操作和文本文件操作291

6.12.17 用户定义的操作函数296

6.13 流代码的大小303

第7章 包容类库304

7.1 类的等级结构的优点304

7.2 类层次结构的目标306

7.3 包容类306

7.3.1 类的分类306

7.3.2 程序运行时对类的识别308

7.4 基于Object类的包容类308

7.5 类AbstractArray309

7.6 Array类313

7.6.1 Array类的使用314

7.6.2 数组中某一存储位置的再次使用315

7.7 Association(关联)类316

7.7.1 关联所用到的对象的定义318

7.7.2 Association类的使用319

7.7.3 从Association派生类321

7.8 类Bag322

7.9 类BaseDate326

7.10 类BaseTime329

7.11 类Btree331

7.11.1 树的基本概念331

7.11.2 二叉树332

7.11.3 B 树333

7.12 类Collection345

7.13 类Container347

7.14 类Date352

7.15 类Deque358

7.16 类Dictionary360

7.16.1 一个Dictionary的例子361

7.16.2 用外部循环量遍历Dictionary包容363

7.17 类DoubleList364

7.18 类Error369

7.19 类HashTable371

7.20 类List378

7.21 类Object382

7.22 类PriorityQueue385

7.22.1 类PriorityQueue的使用387

7.22.2 把优先队列转换成GIFO队列390

7.23 类Queue390

7.24 类Set394

7.24.1 处理字符串的类Set394

7.24.2 一个更接近数学意义上的集合的类Set396

7.25 类Sortable398

7.26 类SortedArray400

7.27 类Stack402

7.28 类String404

7.28.1 类String的使用407

7.28.2 从类String派生出新的类408

7.29 类Time410

7.29.1 类Time的使用411

7.29.2 由类Time派生出新类413

7.30 类Timer416

7.31 类TShouldDelete419

7.32 循环量420

7.33 构造类库422

7.34 基于模板的包容类422

7.35 FDS和ADT包容423

7.36 FDS包容423

7.36.1 FDS存储范例423

7.36.2 FDS包容424

7.36.3 FDS向量包容424

7.36.5 直接计数向量426

7.36.4 简单直接向量426

7.36.6 直接排序向量427

7.36.7 间接简单向量429

7.36.8 间接计数向量430

7.36.9 间接排序向量431

7.37 FDS表包容433

7.37.1 直接简单表435

7.37.2 直接排序表435

7.37.3 间接表438

7.37.4 间接排序表439

7.38 ADT包容439

7.38.1 ADT数组440

7.38.2 ADT排序数组444

7.38.3 ADT栈445

7.38.4 ADT队列和双端队列449

7.38.5 ADT包和集合452

7.38.6 异质ADT包容456

第二部分 开发WindoWs和DOS应用程序459

第8章 用于Windows程序设计的类459

8.1 运行检测程序459

8.2 最终为PC机提供标准GUI460

8.3 围绕对象设计的Windows460

8.4 C++对Windows资源的管理461

8.5 设备描述表461

8.6 绘图闭包471

8.7 对话框476

8.8 位图485

8.9 裁剪板488

8.10 真正的出发点494

第9章 完整的窗口程序495

9.1 文件对话框495

9.1.1 文件打开用的对话框501

9.1.2 文件存储对话框504

9.2 使用打印机510

9.2.1 使用DLL510

9.2.2 Printer Driver DLL512

9.2.3 Printer类514

9.3 文本编辑器520

9.3.1 主菜单520

9.3.2 实现521

9.3.3 About对话框526

第10章 对象窗口类库528

10.1 忘记ANSI C风格的Windows程序528

10.2 Borland“所见即所得”528

10.3 OWL应用程序的解析529

10.3.1 定制主窗口533

10.3.2 对话框处理535

10.3.3 增加菜单537

10.4 无模式对话框538

10.4.1 带色斑的对话框541

10.4.2 全部数字式543

10.4.3 对话框数据的读写544

10.4.4 子控制框的数据合法性检查550

10.5 自画式控制558

10.5.1 BWCC的自画式控制558

10.5.2 更多的数字558

10.5.3 非BWCC的自画式控制561

10.5.4 自画式圆按钮567

10.6 另外一个文件打开对话框573

10.7 持续的OWL对象582

第11章 OWL应用程序589

11.1 OWL应用程序的概貌589

11.2 状态行589

11.2.1 子窗口方式590

11.2.2 GDI方式597

11.3 弹出式菜单606

11.3.1 菜单的处理607

11.3.2 一个完整的应用程序:WPOPUP608

11.4 浮动式工具调色板614

11.4.1 一般的画图工具615

11.4.2 专用的画图工具616

11.4.3 系统管理员617

11.4.4 一个完整的应用程序:TOOL619

11.5 扩展Borland资源命名规定633

11.6 编辑窗口634

11.6.1 用弹出式窗口编辑634

11.6.2 装入键盘加速键638

11.6.3 用文件编辑638

11.6.4 利用现成的Borland资源640

11.6.5 一个完整的应用程序:WFEDIT641

11.7 MDI应用程序642

11.7.1 OWL的类MDI643

11.7.2 一个完整的应用程序:MDIDEMO644

11.7.3 处理菜单命令的子MDI647

11.7.4 子窗口菜单648

第12章 Turbo Vision类650

12.1 以字符方式工作的GUI650

12.1.1 Turbo Vision650

12.1.2 Turbo Vision的新标记和新概念651

12.1.3 TCollection类库652

12.1.4 访问TCollection652

12.2.1 初始化用户应用程序653

12.1.5 持久对象653

12.2 一个Turbo Vision应用程序的分析653

12.2.2 定制应用程序656

12.2.3 理解彩色调色板657

12.2.4 定制桌面662

12.2.5 定制状态行665

12.2.6 定制应用程序的颜色669

12.2.7 定制菜单栏673

12.2.8 定制窗口678

12.3 对话框683

12.3.1 对话控制中的一般问题687

12.3.2 内部对话框的定制688

12.3.3 视图到视图消息692

12.3.4 广播消息693

12.4 持久对象700

12.4.1 避免流管理程序问题701

12.4.2 注册持久类701

12.4.3 辅助流管理程序702

12.4.4 确定读写内容702

12.4.5 初始化持久对话框703

12.4.6 利用资源文件和持久对象704

12.4.7 组装705

12.4.8 使用没有流的持久对象712

12.4.9 防守式的程序设计713

第13章 Turbo Vision应用程序714

13.1 Turbo Vision与Microsoft Windows714

13.2.2 处理热键事件715

13.2 弹出式窗口715

13.2.1 链接一个弹出式窗口到热键上715

13.2.3 编写一个完整的应用程序716

13.3 文件浏览器719

13.3.1 增加滚动条719

13.3.2 开发窗口类层次体系720

13.3.3 编写一个完整的应用程序720

13.3.4 检验窗口合法性726

13.3.5 检验文件大小727

13.3.6 控制窗口属性728

13.4 弹出式菜单728

13.4.1 链接一个弹出式菜单到一热键上728

13.4.2 处理热键事件730

13.4.3 编写一个完整的应用程序731

13.5 带提示的状态行736

13.5.1 定义帮助描述表736

13.5.2 由帮助描述表获得提示736

13.5.3 对菜单使用提示737

13.5.4 对用户类使用提示738

13.5.5 编写一个完整的应用程序738

13.6 视区相关的状态行743

13.6.1 理解帮助描述表范围745

13.6.2 编写一个完整的应用程序745

13.7 上下文相关的帮助749

13.7.1 编制一个帮助文本文件749

13.7.2 编译帮助文件750

13.7.3 从应用程序中激活帮助系统751

13.7.4 编写一个完整的应用程序752

13.8 查看特性757

13.8.1 使用遗忘的右鼠标按钮758

13.8.2 产生特征检阅命令760

13.8.3 编写一个完整的应用程序760

13.9 用于编辑的窗口768

13.9.1 开发Turbo Vision裁剪板类768

13.9.2 使用TEditWindow的内部命令769

13.9.3 为TEditWindow的提示和出错处理提供支持771

13.9.4 编写一个完整的应用程序772

13.10 后记781

参考文献782

1993《Borland C++3.1编程指南》由于是年代较久的资料都绝版了,几乎不可能购买到实物。如果大家为了学习确实需要,可向博主求助其电子版PDF文件(由(美)费森(Faison,Ted)著;蒋维杜等译 1993 北京:清华大学出版社 出版的版本) 。对合法合规的求助,我会当即受理并将下载地址发送给你。