图书介绍

完美C++ 第5版 双色【2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载】

完美C++ 第5版 双色
  • (美)萨维奇,(美)默克著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121231988
  • 出版时间:2014
  • 标注页数:769页
  • 文件大小:136MB
  • 文件页数:790页
  • 主题词:C语言-程序设计

PDF下载


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

下载说明

完美C++ 第5版 双色PDF格式电子书版下载

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

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

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

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

图书目录

第1章 C++基础1

1.1 C++简介2

C++语言的起源2

C++与面向对象编程3

C++的特点3

C++术语3

C++程序示例3

1.2 变量、表达式及赋值语句5

标识符5

变量6

赋值语句8

string类简介9

陷阱:未初始化变量9

提示:采用有意义的变量名10

更多赋值语句11

赋值兼容性11

字面值12

转义序列14

命名常量14

算数运算符和表达式16

整数和浮点数除法17

陷阱:全整数除法17

类型转换18

自增和自减运算符20

陷阱:求值顺序21

1.3 控制台输入/输出22

使用cout输出22

换行符23

提示:以n或endl结束程序24

格式化浮点数24

用cerr输出25

用cin输入25

提示:输入/输出中的换行28

1.4 编程风格28

注释28

1.5 库与命名空间29

库与include命令29

命名空间29

陷阱:库名的问题30

第2章 流程控制37

2.1 布尔表达式38

创建布尔表达式38

陷阱:不等式连写39

布尔表达式求值40

优先级规则41

陷阱:整数值用作布尔值44

2.2 分支机制45

if-else语句45

复合语句47

陷阱:用=代替==47

省略else49

嵌套语句49

多分支if-else语句49

switch语句50

陷阱:遗漏switch语句中的break52

提示:在菜单中使用switch语句52

枚举类型53

条件运算符53

2.3 循环54

while和do-while循环54

再谈自增和自减运算符57

逗号运算符58

for语句59

提示:重复N次的循环61

陷阱:for语句中额外的分号62

陷阱:无限循环62

break与continue语句65

嵌套循环67

2.4 文件输入简介67

通过ifstream读取文本文件内容68

第3章 函数基础81

3.1 预定义函数82

带有返回值的预定义函数82

预定义的void函数86

随机数生成器88

3.2 自定义函数91

定义带有返回值的函数91

函数声明的另一种形式93

陷阱:参数顺序的错误93

调用函数的函数94

示例:一个四舍五入的函数94

返回布尔值的函数96

定义void函数96

void函数中的return语句98

前提条件和运行结果98

main函数100

递归函数100

3.3 作用域规则101

局部变量101

过程抽象103

全局常量和全局变量104

语句块106

嵌套作用域107

提示:在分支和循环语句中使用函数调用107

for循环体中的变量声明107

第4章 函数与重载117

4.1 参数118

传值参数118

初识引用参数120

引用传递调用机制详解122

常量引用参数124

示例:函数swapValues124

提示:一种操作,而不是代码125

混合参数列表126

提示:使用何种参数126

陷阱:无意的局部变量128

提示:选择形参的名字129

示例:买比萨129

4.2 重载与默认实参132

重载简介132

陷阱:自动类型转换与重载134

重载解析的规则135

示例:改写“买比萨程序”136

默认参数138

4.3 函数的测试和调试140

assert宏140

占位程序和驱动程序141

第5章 数组151

5.1 数组简介152

数组的声明和引用152

提示:对数组使用for循环154

陷阱:数组的索引始终是从0开始的154

提示:使用已定义的常量作为数组的大小154

内存中的数组155

陷阱:数组越界157

数组的初始化157

5.2 函数中的数组159

索引变量作为函数实参159

整个数组作为函数实参160

const修饰符163

陷阱:const参数的不一致使用164

返回数组的函数164

示例:生产图表165

5.3 用数组编程169

部分填充的数组169

提示:不要吝啬形参的使用169

示例:查询数组172

示例:给数组排序174

5.4 多维数组178

多维数组基础178

多维数组参数179

示例:使用二维数组的记分程序179

第6章 结构体和类195

6.1 结构体196

结构体类型198

陷阱:漏掉结构体定义末尾的分号200

结构体作为函数参数201

提示:使用多重结构体201

结构体的初始化204

6.2 类206

定义类和成员函数206

封装211

公有成员和私有成员211

取值和赋值函数214

提示:接口和实现的分离216

提示:封装的测试216

结构体与类217

提示:对象思考217

第7章 构造函数及其他工具225

7.1 构造函数226

构造函数的定义226

陷阱:无参构造函数230

构造函数的显式调用230

提示:总是为类定义一个默认构造函数231

示例:BankAccount类233

类类型成员变量238

7.2 其他工具241

const修饰符241

陷阱:const的不一致用法243

内联函数246

静态成员248

嵌套类和局部类定义251

7.3 向量——标准模板库预览251

向量基础252

陷阱:方括号的索引超过向量的大小253

提示:向量的赋值254

效率问题255

第8章 运算符重载、友元和引用263

8.1 基本运算符的重载264

重载基础264

提示:构造函数可以返回一个对象269

返回常量类型270

一元运算符的重载272

作为成员函数的运算符重载272

提示:类可以访问其所有对象275

重载函数调用符()275

陷阱:重载&&、Ⅱ及逗号运算符275

8.2 友元函数与自动类型转换276

构造函数的自动类型转换276

陷阱:成员运算符和自动类型转换277

友元函数277

友元类280

陷阱:不支持友元的编译器281

8.3 引用和其他运算符重载282

引用282

提示:返回类的成员变量283

重载“>>”和“<<”284

提示:应使用什么样的返回值类型289

赋值运算符291

重载自增和自减运算符291

重载数组运算符[]294

基于左值和右值的重载296

第9章 字符串303

9.1 字符串类型数组304

C字符串值和C字符串变量304

陷阱:对C字符串使用“=”和“==”308

<cstring>中的其他函数309

示例:命令行参数311

C字符串的输入/输出313

9.2 字符操作工具315

字符的输入/输出315

成员函数get和put315

示例:使用换行函数检查输入318

陷阱:输入时没有处理‘n’319

成员函数putback、peek和ignore320

字符操作函数322

陷阱:函数toupper和tolower返回int型数值324

9.3 标准string类325

标准string类简介325

string类的输入和输出327

提示:getline函数的其他版本330

陷阱:对cin同时使用>>和getline331

使用string类处理字符串331

示例:回文检测335

string类对象和C字符串的转换338

第10章 指针和动态数组347

10.1 指针348

指针变量349

内存管理基础355

陷阱:悬空指针357

动态变量和自动变量358

提示:定义指针类型358

陷阱:指针用作传值参数360

指针的应用361

10.2 动态数组362

数组变量和指针变量362

创建并使用动态数组363

示例:一个返回数组的函数366

指针运算368

多维动态数组368

10.3 类、指针和动态数组371

运算符->371

this指针371

重载赋值运算符372

示例:部分填充数组的类378

析构函数380

拷贝构造函数381

第11章 分散编译和命名空间391

11.1 分散编译392

封装回顾392

头文件和实现文件393

示例:DigitalTime类399

提示:可重用的组件401

使用#ifndef401

提示:定义其他库403

11.2 命名空间404

命名空间和us ing指令404

创建一个命名空间406

using声明409

限定名称410

提示:为命名空间取名412

示例:一个定义在命名空间中的类412

无名称的命名空间413

陷阱:混淆全局命名空间和无名称命名空间418

提示:用无名称命名空间代替static修饰符419

提示:隐藏帮助函数419

嵌套命名空间420

提示:应该如何指明使用的命名空间420

第12章 流和文件I/O操作429

12.1 I/O流430

文件I/O431

陷阱:流变量的使用限制434

向文件追加输出内容435

提示:打开文件的另一种方法436

提示:检查一个文件是否已被成功打开439

字符I/O440

文件结束检查440

12.2 I/O流工具444

使用文件名输入444

使用流函数进行格式化输出444

控制符447

保存设置的标记448

更多的输出流成员函数449

示例:整理文件格式450

示例:编辑文本文件452

12.3 流的继承层次:继承概述455

流之间的继承455

示例:另一版本的newLine函数457

使用类stringstream解析字符串460

12.4 随机文件存取462

第13章 递归477

13.1 递归void函数478

示例:竖直排列的数字479

跟踪一个递归调用481

深入理解递归484

陷阱:无限递归485

递归调用中的栈487

陷阱:栈溢出488

递归与迭代的比较488

13.2 有返回值的递归函数489

有返回值的递归函数的一般形式489

示例:另一个幂函数490

交叉递归494

13.3 按递归方式思考问题496

递归设计技巧496

二分查找497

编码498

检查递归是否正确501

效率502

第14章 继承513

14.1 继承基础514

派生类514

派生类的构造函数522

陷阱:使用基类的私有成员变量524

陷阱:私有成员函数是无法被有效继承的526

protec ted限定符526

成员函数的重定义529

重定义与重载530

访问被重定义过的基类函数531

不可被继承的函数532

14.2 利用继承编程533

派生类中的赋值运算符和拷贝构造函数533

派生类的析构函数534

示例:可备份的部分填充的数组534

陷阱:赋值运算符两边是同一个对象541

示例:PFArrayDBak的另一种实现542

提示:一个类可以访问本类所有对象的私有成员544

提示:“是一个”和“有一个”544

保护继承和私有继承545

多继承546

第15章 多态与虚函数555

15.1 虚函数基础556

延迟绑定556

C++中的虚函数557

提示:virtual属性会被继承563

提示:什么时候应该使用虚函数563

陷阱:没有对虚成员函数进行定义564

抽象类与纯虚函数564

示例:抽象类565

15.2 指针和虚函数567

虚函数与扩展类型兼容性567

陷阱:切片问题571

提示:使析构函数成为虚函数572

向下类型转换和向上类型转换573

C++如何实现虚函数574

第16章 模板585

16.1 函数模板586

函数模板语法587

陷阱:编译器的复杂性590

提示:如何定义模板592

示例:一个通用的排序函数592

陷阱:使用模板时误用了不正确的数据类型596

16.2 类模板597

类模板语法598

示例:一个数组模板类601

模板中的vector和basic string606

16.3 模板和继承606

示例:带备份的部分填充数组模板类607

第17章 链式数据结构617

17.1 节点和链表619

节点619

链表623

在链表头插入节点625

陷阱:丢失节点627

插入和删除链表内的节点628

陷阱:对动态数据结构使用赋值运算符631

搜索链表631

搜索函数伪代码632

双向链表633

为双向链表增加一个节点635

从双向链表中删除一个节点635

示例:使用双向链表实现的通用排序模板函数641

17.2 链表的应用644

示例:栈模板类644

示例:队列模板类650

提示:命名空间的注解652

友元类以及类似的其他选择653

示例:包含节点链的哈希表655

字符串哈希函数656

哈希表的效率660

示例:集合(set)模板类661

集合的基本操作662

链表创建的集合的效率667

17.3 迭代器668

指针作为迭代器668

迭代器类669

示例:迭代器类670

17.4 树676

树的属性676

示例:树模板类678

第18章 异常处理695

18.1 异常处理基础696

异常处理的简单样例697

定义自己的异常类704

多个抛出和捕获704

陷阱:首先捕获比较明确的异常707

提示:异常类可以很简单708

在函数中抛出异常708

异常说明710

陷阱:派生类中的异常说明712

18.2 异常处理的编程技术713

抛出异常的时机713

陷阱:未被捕获的异常714

陷阱:嵌套try-catch块715

陷阱:过度使用异常715

异常类层次结构715

可用内存测试716

再次抛出异常716

第19章 标准模板库721

19.1 迭代器723

迭代器基础723

陷阱:编译器问题726

迭代器的种类728

常量迭代器和可变迭代器731

反向迭代器732

其他种类的迭代器733

19.2 容器734

连续容器734

陷阱:迭代器和删除元素738

提示:容器中的类型定义739

容器适配器栈和队列739

陷阱:底层容器740

关联式容器set和map742

效率747

19.3 泛型算法748

运行时间和大-O表示法749

容器访问运行时间752

不改变序列的算法753

改变序列的算法757

集合算法758

排序算法7601

热门推荐