图书介绍

C++精髓 软件工程方法PDF|Epub|txt|kindle电子书版本网盘下载

C++精髓 软件工程方法
  • (美)Victor Shtern著;李师贤等译 著
  • 出版社: 北京:机械工业出版社
  • ISBN:7111101006
  • 出版时间:2002
  • 标注页数:804页
  • 文件大小:175MB
  • 文件页数:10878845页
  • 主题词:C++

PDF下载


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

下载说明

C++精髓 软件工程方法PDF格式电子书版下载

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

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

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

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

图书目录

第一部分 C++程序设计简介1

第1章 面向对象方法的优点1

1.1 软件危机的起因2

1.2 解决方案1:摆脱程序员5

1.3 解决方案2:改进管理技术7

1.3.1 瀑布模型方法7

1.3.2 快速原型方法8

1.4 解决方案3:设计一种复杂而完善的语言9

1.5 面向对象方法的含义和优点10

1.5.1 设计人员的工作10

1.5.2 设计质量:内聚性11

1.5.3 设计质量:耦合度12

1.5.4 设计质量:将数据与函数绑定在一起12

1.5.5 设计质量:信息隐藏和封装14

1.5.6 设计问题:命名冲突15

1.5.7 设计问题:对象初始化15

1.5.8 对象的实质16

1.5.9 使用对象的优点17

1.6 C++程序设计语言的特征18

1.6.1 C语言的目标:性能、可读性、美观和可移植性18

1.6.2 C++语言的目标:与C语言向后兼容的类19

1.7 小结21

第2章 快速入门:C++简介22

2.1 基本程序结构22

2.2 预处理程序指令24

2.3 注释27

2.4 声明和定义30

2.5 语句和表达式34

2.6 函数和函数调用41

2.7 类47

2.8 程序开发工具的使用51

2.9 小结54

第3章 C++数据和表达式的使用55

3.1 值及其类型55

3.2 整数类型57

3.2.1 整数类型修饰符59

3.2.2 字符62

3.2.3 布尔值64

3.3 浮点类型64

3.4 C++表达式的使用66

3.4.1 高优先级运算符66

3.4.2 算术运算符67

3.4.3 移位运算符69

3.4.4 按位逻辑运算符70

3.4.5 关系和相等运算符72

3.4.6 逻辑运算符73

3.4.7 赋值运算符75

3.4.8 条件运算符76

3.4.9 逗号运算符77

3.5 混合型表达式:隐藏的危险77

3.6 小结82

第4章 C++控制流83

4.1 语句和表达式83

4.2 条件语句84

4.2.1 条件语句的标准形式85

4.2.2 条件语句中的常见错误88

4.2.3 嵌套条件语句及其优化98

4.3 循环104

4.3.1 while循环105

4.3.2 do-while循环111

4.3.3 for循环114

4.4 C++转移语句117

4.4.1 break语句117

4.4.2 continue语句120

4.4.3 goto语句120

4.4.4 return和exit转移121

4.4.5 switch语句125

4.5 小结127

第5章 程序员定义数据类型的聚集129

5.1 同种类聚集的数组129

5.1.1 作为值向量的数组129

5.1.2 C++数组的定义131

5.1.3 数组上的操作133

5.1.4 下标正确性的检查133

5.1.5 多维数组136

5.1.6 字符数组的定义138

5.1.7 字符数组上的操作140

5.1.8 字符串函数和内存讹用141

5.1.9 二维字符数组144

5.1.10 插入算法中的数组溢出146

5.1.11 数组类型的定义150

5.2 不同种类聚集的结构151

5.2.1 程序员定义类型的结构定义151

5.2.2 创建和初始化结构变量152

5.2.3 层次结构及其分量153

5.2.4 结构变量上的操作154

5.2.5 在多文件程序中定义的结构155

5.3 联合、枚举和位域157

5.3.1 联合157

5.3.2 检举160

5.3.3 位域162

5.4 小结165

第6章 内存管理:栈和堆166

6.1 作为合作工具的名字作用域166

6.1.1 C++词法作用域167

6.1.2 用一作用域中的名字冲突167

6.1.3 在独立的作用域中使用相同的名字170

6.1.4 在嵌套的作用域中使用相同的名字171

6.1.5 循环变量的作用域174

6.2 内存管理:存储类别175

6.2.1 自动变量176

6.2.2 外部变量178

6.2.3 静态变量182

6.3 内存管理:堆的使用186

6.3.1 作为类型变量的C++指针187

6.3.2 堆的内存分配191

6.3.3 数组和指针194

6.3.4 动态数组197

6.3.5 动态结构207

6.4 磁盘文件的输入和输出215

6.4.1 输出到文件215

6.4.2 从文件输入217

6.4.3 输入/输出文件对象221

6.5 小结223

第二部分 用C++进行面向对象的程序设计225

第7章 使用C++函数编程225

7.1 作为模块化工具的C++函数226

7.1.1 函数声明227

7.1.2 函数定义228

7.1.3 函数调用228

7.2 参数的提升和类型转换230

7.3 C++中函数的参数传递231

7.3.1 按值调用231

7.3.2 按指针调用232

7.3.3 C++中的参数传递:按引用调用238

7.3.4 结构241

7.3.5 数组246

7.3.6 类型转换的进一步讨论249

7.3.7 从函数返回值251

7.4 内联函数255

7.5 有缺省值的参数257

7.6 函数名重载261

7.7 小结267

第8章 使用函数的面向对象程序设计268

8.1 内聚性270

8.2 耦合度270

8.2.1 隐式耦合度271

8.2.2 显式耦合度274

8.2.3 如何降低耦合度277

8.3 数据封装281

8.4 信息隐藏286

8.5 一个有关封装的大型例子291

8.6 用函数实现封装的不足299

8.7 小结301

第9章 作为模块单元的C++类303

9.1 基本的类语法304

9.1.1 绑定数据与操作304

9.1.2 消除名字冲突307

9.1.3 在类之外实现成员函数310

9.1.4 不同存储方式的类对象的定义313

9.2 对类成员的控制访问314

9.3 对象实例的初始化319

9.3.1 作为成员函数的构造函数320

9.3.2 缺省构造函数321

9.3.3 拷贝构造函数323

9.3.4 转换构造函数325

9.3.5 析构函数326

9.3.6 构造函数和析构函数的调用时间330

9.3.7 类作用域和嵌套作用域中的名字覆盖331

9.3.8 用运算符和函数调用的内存管理333

9.4 在客户代码中使用返回的对象336

9.4.1 返回指针和引用336

9.4.2 返回对象338

9.5 关于const关键字的讨论340

9.6 静态类成员345

9.6.1 用全局变量作为类特性345

9.6.2 关键字static的第四种含义347

9.6.3 静态数据成员的初始化348

9.6.4 静态成员函数348

9.7 小结351

第10章 运算符函数:另一种好设计思想353

10.1 运算符重载353

10.2 运算符重载的限制360

10.2.1 不可重载的运算符360

10.2.2 返回类型的限制361

10.2.3 参数个数的限制363

10.2.4 运算符优先级的限制364

10.3 把重载运算符作为类成员364

10.3.1 用类成员取代全局函数364

10.3.2 在链式操作中使用类成员366

10.3.3 使用const关键字368

10.4 案例分析:有理数370

10.5 混合参数类型377

10.6 友元函数383

10.7 小结394

第11章 构造函数与析构函数:潜在的问题395

11.1 对按值传递对象的深入讨论396

11.2 非数值类的运算符重载400

11.2.1 String类401

11.2.2 堆内存的动态管理402

11.2.3 保护客户代码中的对象堆数据406

11.2.4 重载的串接运算符406

11.2.5 防止内存泄漏408

11.2.6 保护程序的完整性409

11.2.7 如何由此及彼413

11.3 对拷贝构造函数的深入讨论414

11.3.1 完整性问题的补救措施415

11.3.2 拷贝语义和值语义419

11.3.3 程序员定义的拷贝构造函数420

11.3.4 按值返回423

11.3.5 拷贝构造函数的有效局限性427

11.4 赋值运算符的重载427

11.4.1 系统提供的赋值运算符的问题427

11.4.2 重载的赋值:内存泄漏428

11.4.3 重载的赋值:自我赋值429

11.4.4 重载的赋值:链表达式430

11.4.5 程序性能的考虑433

11.4.6 第一种补救措施:更多的重载433

11.4.7 第二种补救措施:按引用返回434

11.5 实用性的考虑:实现什么函数435

11.6 小结438

第三部分 使用聚集和继承的面向对象程序设计439

第12章 复合类的优缺点439

12.1 用类对象作为数据成员440

12.1.1 C++类复合的语法442

12.1.2 访问类数据成员的数据成员443

12.1.3 访问方法参数的数据成员445

12.2 复合对象的初始化446

12.2.1 使用组件的缺省构造函数448

12.2.2 使用成员的初始化列表453

12.3 具有特殊属性的数据成员457

12.3.1 常量数据成员458

12.3.2 引用数据成员459

12.3.3 用对象作为其类自身的数据成员461

12.3.4 用静态数据成员作为其类自身的数据成员463

12.4 容器类465

12.4.1 嵌套类478

12.4.2 友元类480

12.5 小结482

第13章 如何处理相似类484

13.1 相似类的处理485

13.1.1 把子类的特征合并到一个类中486

13.1.2 把保持程序完整性的任务推向服务器488

13.1.3 为每种服务器对象建立单独的类492

13.1.4 使用C++的继承去链接相关类495

13.2 C++继承的语法497

13.2.1 基类的不同派生模式498

13.2.2 定义和使用基类对象和派生类对象501

13.3 对基类和派生类服务的访问503

13.4 对派生类对象的基类成员的访问506

13.4.1 公共继承507

13.4.2 受保护继承511

13.4.3 私有继承515

13.4.4 调整对派生类中基类成员的访问517

13.4.5 缺省继承模式518

13.5 在继承下的作用域规则和名字解析520

13.5.1 名字重载与名字隐藏522

13.5.2 派生类所隐藏的基类方法的调用525

13.5.3 使用继承改进程序529

13.6 派生类的构造函数和析构函数532

13.6.1 在派生类构造函数中的初始化列表535

13.6.2 继承中的析构函数537

13.7 小结539

第14章 在继承和复合之间进行选择541

14.1 选择代码重用的方法542

14.1.1 类之间的客户-服务器关系的例子542

14.1.2 运用智力的重用:重做545

14.1.3 借助服务重用547

14.1.4 通过继承的代码重用550

14.1.5 以重新定义函数的方式继承554

14.1.6 继承和复合的优缺点556

14.2 统一建模语言557

14.2.1 使用UML的目的557

14.2.2 UML基础:类的表示560

14.2.3 UML基础:关系的表示561

14.2.4 UML基础:聚集和泛化的表示562

14.2.5 UML基础:多重性的表示563

14.3 案例分析:一个租赁商店565

14.4 类的可见性和任务划分580

14.4.1 类的可见性及类之间的关系580

14.4.2 将任务推向服务器类582

14.4.3 使用继承584

14.5 小结585

第四部分 C++的高级应用587

第15章 虚函数和继承的其他高级应用587

15.1 非相关类之间的转换589

15.1.1 强类型与弱类型591

15.1.2 转换构造函数592

15.1.3 指针或引用之间的转换593

15.1.4 转换运算符594

15.2 通过继承相关的类之间的转换594

15.2.1 案例转换与不安全转换595

15.2.2 对象的指针与引用的转换599

15.2.3 指针与引用参数的转换607

15.3 虚函数612

15.3.1 动态绑定:传统方法615

15.3.2 动态绑定:面向对象的方法622

15.3.3 动态绑定:使用虚函数629

15.3.4 动态绑定与静态绑定633

15.3.5 纯虚函数636

15.3.6 虚函数:析构函数639

15.4 多继承:多个基类640

15.4.1 多继承:访问规则642

15.4.2 类之间的转换643

15.4.3 多继承:构造函数和析构函数644

15.4.4 多继承:二义性645

15.4.5 多继承:有向图647

15.4.6 有继承:有用吗648

15.5 小结649

第16章 运算符重载的高级应用651

16.1 运算符重载简介651

16.2 一元运算符659

16.2.1 ++和--运算符659

16.2.2 后缀重载运算符666

16.2.3 转换运算符668

16.3 下标和函数调用运算符674

16.3.1 下标运算符675

16.3.2 函数调用运算符683

16.4 输入/输出运算符687

16.4.1 重载运算符>>688

16.4.2 重载运算符<<691

16.5 小结693

第17章 模板:另一个设计工具694

17.1 类设计重用的一个简单例子694

17.2 模板类定义的语法701

17.2.1 模板类说明702

17.2.2 模板实例化703

17.2.3 模板函数的实现704

17.2.4 嵌套模板710

17.3 多参数的模板类711

17.3.1 多类型参数711

17.3.2 带有常量表达式参数的模板713

17.4 模板类实例之间的关系716

17.4.1 作为友元的模板类717

17.4.2 嵌套模板类719

17.4.3 带静态成员的模板722

17.5 模板的规则说明724

17.6 模板函数728

17.7 小结729

第18章 带异常处理的程序设计730

18.1 异常处理的一个简单例子730

18.2 C++异常的语法736

18.2.1 抛出异常737

18.2.2 捕获异常738

18.2.3 声明异常743

18.2.4 重新抛出异常745

18.3 类对象的异常748

18.3.1 抛出、声明与捕获对象的语法749

18.3.2 使用带异常处理的继承752

18.3.3 标准异常库756

18.4 类型转换运算符757

18.4.1 static_cast运算符757

18.4.2 reinterpret_cast运算符761

18.4.3 const_cast运算符761

18.4.4 dynamic_cast运算符764

18.4.5 typeid运算符766

18.5 小结767

第19章 总结769

19.1 作为传统程序设计语言的C++769

19.1.1 C++内部数据类型769

19.1.2 C++表达式771

19.1.3 C++控制流772

19.2 作为模块化语言的C++772

19.2.1 C++聚集类型之一:数组773

19.2.2 C++聚集类型之二:结构、联合和枚举类型774

19.2.3 作为模块化工具的C++函数774

19.2.4 C++函数的参数传递776

19.2.5 C++中的作用域与存储类别776

19.3 作为面向对象语言的C++778

19.3.1 C++类778

19.3.2 构造函数、析构函数和重载运算符778

19.3.3 类复合与继承779

19.3.4 虚函数与抽象类781

19.3.5 模板782

19.3.6 异常782

19.4 C++及其竞争对手783

19.4.1 C++与传统的语言783

19.4.2 C++与Visual Basic783

19.4.3 C++与C784

19.4.4 C++与Java785

19.5 小结786

索引787

热门推荐