图书介绍

C++编程思想2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

C++编程思想
  • (美)(B.埃克尔)Bruce Eckel著;刘宗田等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111071166
  • 出版时间:2000
  • 标注页数:421页
  • 文件大小:18MB
  • 文件页数:437页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++编程思想PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

前言1

第1章 对象的演化1

1.1基本概念1

1.1.1对象:特性+行为1

1.1.2继承:类型关系1

译者序1

1.1.3多态性2

1.1.4操作概念:OOP程序像什么3

1.2为什么C++会成功3

1.2.1较好的C3

1.2.4系统更容易表达和理解4

1.2.5“库”使你事半功倍4

1.2.2采用渐进的学习方式4

1.2.3运行效率4

1.2.6错误处理5

1.2.7大程序设计5

1.3方法学介绍5

1.3.1复杂性5

1.3.2内部原则6

1.3.3外部原则6

1.3.4对象设计的五个阶段9

1.3.6方法应当提供什么10

1.3.5方法承诺什么10

1.4起草:最小的方法12

1.4.1前提13

1.4.2高概念14

1.4.3论述(treatment)14

1.4.4结构化14

1.4.5开发16

1.4.6重写17

1.4.7逻辑17

1.5其他方法17

1.5.1 Booch18

1.5.2责任驱动的设计(RDD)19

1.5.3对象建模技术(OMT)19

1.6为向OOP转变而采取的策略19

1.6.1逐步进入OOP19

1.6.2管理障碍20

1.7小结21

第2章 数据抽象22

2.1声明与定义22

2.2一个袖珍C库23

2.4什么是非正常29

2.3放在一起:项目创建工具29

2.5基本对象30

2.6什么是对象34

2.7抽象数据类型35

2.8对象细节35

2.9头文件形式36

2.10嵌套结构37

2.11小结41

2.12练习41

3.2 C++的存取控制42

3.1设置限制42

第3章 隐藏实现42

3.3友元44

3.3.1嵌套友元45

3.3.2它是纯的吗48

3.4对象布局48

3.5类48

3.5.1用存取控制来修改stash50

3.5.2用存取控制来修改stack51

3.6句柄类(handle classes)51

3.6.1可见的实现部分51

3.6.2减少重复编译52

3.7小结54

3.8练习54

第4章 初始化与清除55

4.1用构造函数确保初始化55

4.2用析构函数确保清除56

4.3 清除定义块58

4.3.1 for循环59

4.3.2空间分配60

4.4含有构造函数和析构函数的stash61

4.5含有构造函数和析构函数的stack63

4.6集合初始化65

4.7缺省构造函数67

4.8小结68

4.9练习68

第5章 函数重载与缺省参数69

5.1范围分解69

5.1.1用返回值重载70

5.1.2安全类型连接70

5.2重载的例子71

5.3缺省参数74

5.4小结81

5.5练习82

第6章 输入输出流介绍83

6.1为什么要用输入输出流83

6.2解决输入输出流问题86

6.2.1预先了解操作符重载86

6.2.2插入符与提取符87

6.2.3通常用法88

6.2.4面向行的输入90

6.3文件输入输出流91

6.4输入输出流缓冲93

6.5在输入输出流中查找94

6.6 strstreams96

6.6.1为用户分配的存储96

6.6.2自动存储分配98

6.7输出流格式化100

6.7.1内部格式化数据101

6.7.2例子102

6.8格式化操纵算子106

6.9建立操纵算子108

6.10输入输出流实例111

6.10.1代码生成111

6.10.2一个简单的数据记录117

6.12练习123

6.11小结123

第7章 常量124

7.1值替代124

7.1.1头文件里的const124

7.1.2 const的安全性125

7.1.3集合126

7.1.4与C语言的区别126

7.2.1指向const的指针127

7.2.2 const指针127

7.2指针127

7.2.3赋值和类型检查128

7.3函数参数和返回值128

7.3.1传递const值128

7.3.2返回const值129

7.3.3传递和返回地址131

7.4类133

7.4.1类里的const和enum133

7.4.2编译期间类里的常量134

7.4.3 const对象和成员函数136

7.4.4只读存储能力139

7.5可变的(volatile)140

7.7练习141

7.6小结141

第8章 内联函数142

8.1预处理器的缺陷142

8.2内联函数144

8.2.1类内部的内联函数145

8.2.2存取函数146

8.3.1局限性150

8.3.2赋值顺序150

8.3内联函数和编译器150

8.3.3在构造函数和析构函数里隐藏行为151

8.4减少混乱152

8.5预处理器的特点153

8.6改进的错误检查154

8.7小结155

8.8练习155

第9章 命名控制157

9.1来自C语言中的静态成员157

9.1.1函数内部的静态变量157

9.1.2控制连接160

9.2名字空间161

9.1.3其他的存储类型指定符161

9.2.1产生一个名字空间162

9.2.2使用名字空间163

9.3 C++中的静态成员166

9.3.1定义静态数据成员的存储166

9.3.2嵌套类和局部类168

9.3.3静态成员函数169

9.4静态初始化的依赖因素171

9.6小结174

9.7练习174

9.5转换连接指定174

第10章 引用和拷贝构造函数176

10.1 C++中的指针176

10.2 C++中的引用176

10.2.1函数中的引用177

10.2.2参数传递准则178

10.3拷贝构造函数179

10.3.1传值方式传递和返回179

10.3.2拷贝构造函数182

10.3.3缺省拷贝构造函数187

10.3.4拷贝构造函数方法的选择188

10.4指向成员的指针(简称成员指针)190

10.5小结192

10.6练习193

第11章 运算符重载194

11.1警告和确信194

11.2语法194

11.3可重载的运算符195

11.3.1一元运算符195

11.3.2二元运算符199

11.3.3参数和返回值210

11.3.4与众不同的运算符211

11.4非成员运算符214

11.3.5不能重载的运算符214

11.5重载赋值符216

11.6自动类型转换226

11.6.1构造函数转换226

11.6.2运算符转换227

11.6.3一个理想的例子:strings229

11.6.4自动类型转换的缺陷230

11.7小结232

11.8练习233

第12章 动态对象创建234

12.1对象创建234

12.1.1 C从堆中获取存储单元的方法235

12.1.3运算符delete236

12.1.2运算符new236

12.1.4一个简单的例子237

12.1.5内存管理的开销237

12.2重新设计前面的例子238

12.2.1仅从堆中创建string类238

12.2.2 stash指针239

12.2.3 stack例子242

12.3用于数组的new和delete244

12.4用完内存245

12.5.1重载全局new和delete246

12.5重载new和delete246

12.5.2为一个类重载new和delete248

12.5.3为数组重载new和delete250

12.5.4构造函数调用251

12.5.5对象放置252

12.6小结253

12.7练习254

第13章 继承和组合255

13.1组合语法255

13.2继承语法256

13.3.2在初始化表达式表中的内置类型258

13.3构造函数的初始化表达式表258

13.3.1成员对象初始化258

13.4组合和继承的联合259

13.4.1构造函数和析构函数的次序260

13.4.2名字隐藏261

13.4.3非自动继承的函数262

13.5组合与继承的选择263

13.5.1子类型设置265

13.5.2专门化267

13.5.3私有继承268

13.6保护269

13.7多重继承270

13.8渐增式开发270

13.9向上映射270

13.9.1为什么“向上映射”271

13.9.2组合与继承272

13.9.3指针和引用的向上映射273

13.9.4危机273

13.10小结273

13.11练习273

14.1向上映射274

第14章 多态和虚函数274

14.2问题275

14.3虚函数276

14.4 C++如何实现晚捆绑279

14.4.1存放类型信息280

14.4.2对虚函数作图281

14.4.3撩开面纱282

14.4.4安装vpointer283

14.4.5对象是不同的283

14.5为什么需要虚函数284

14.7继承和VTABLE288

14.8.1构造函数调用次序291

14.6抽象基类和纯虚函数291

14.8虚函数和构造函数291

14.8.2虚函数在构造函数中的行为292

14.9析构函数和虚拟析构函数292

14.10小结294

14.11练习294

第15章 模板和包容器类295

15.1包容器和循环子295

15.2模板综述297

15.2.2 Smalltalk方法298

15.2.1 C方法298

15.3模板的语法299

15.2.3模板方法299

15.3.1非内联函数定义300

15.3.2栈模板(the stack as a template)301

15.3.3模板中的常量303

15.4 stash stack模板304

15.4.1所有权问题305

15.4.2 stash模板305

15.4.3 stack模板310

15.5.1栈上的字符串313

15.5字符串和整型313

15.5.2整型314

15.6向量315

15.6.1“无穷”向量315

15.6.2集合318

15.6.3关联数组320

15.7模板和继承323

15.7.1设计和效率326

15.7.2防止模板膨胀327

15.8多态性和包容器328

15.9包容器类型331

15.10.1存储分配系统332

15.10函数模板332

15.10.2为tstack提供函数335

15.10.3成员函数模板337

15.11控制实例337

15.12小结339

15.13练习339

第16章 多重继承340

16.1概述340

16.3向上映射的二义性341

16.2子对象重叠341

16.4虚基类342

16.4.1“最晚辈派生”类和虚基初始化343

16.4.2使用缺省构造函数向虚基“警告”345

16.5开销346

16.6向上映射347

16.7避免MI354

16.8修复接口355

16.9小结358

16.10练习359

17.1 C语言的出错处理360

第17章 异常处理360

17.2抛出异常362

17.3异常捕获362

17.3.1 try块362

17.3.2异常处理器363

17.3.3异常规格说明364

17.3.4更好的异常规格说明366

17.3.5捕获所有异常366

17.3.6异常的重新抛出366

17.3.7未被捕获的异常367

17.4清除368

17.5构造函数371

17.6异常匹配375

17.7标准异常376

17.8含有异常的程序设计377

17.8.1何时避免异常377

17.8.2异常的典型使用378

17.9开销380

17.10小结380

17.11练习380

18.2什么是RTTI382

18.1例子——shape382

第18章 运行时类型识别382

18.3语法细节386

18.3.1对于内部类型的typeid()386

18.3.2产生合适的类型名字386

18.3.3非多态类型387

18.3.4映射到中间级387

18.3.5 void指针388

18.3.6用模板来使用RTTI388

18.4引用389

18.5多重继承390

18.6合理使用RTTI391

18.7 RTTI的机制及花费394

18.8创建我们自己的RTTI395

18.9新的映射语法398

18.9.1 static_cast399

18.9.2 const_cast400

18.9.3 reinterpret_cast401

18.10小结403

18.11练习403

附录A 其他性能404

附录B 编程准则409

附录C 模拟虚构造函数415

热门推荐