《C++程序设计:现代方法》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:(美)F.ALEXANDER ALLAIN著;赵守彬,陈园军,马兴旺译
  • 出 版 社:北京:人民邮电出版社
  • 出版年份:2014
  • ISBN:9787115357007
  • 页数:369 页
图书介绍:C++语言因其强大的功能、广泛的适用性和极高的效率,已经成为毋庸置疑的主流编程语言。本书是哈佛大学老师、资深C++程序员一线教学经验的总结,配套网站CProgramming.com已经帮助全球数百万的程序员学会了C++。本书对C++基本概念和技术进行了权威阐述,强调现代C++编程风格。书中配有大量来自实战的实例和习题。

第一部分 进入C+的世界 3

第1章 简介和环境搭建 3

1.1什么是编程语言 3

1.2 C和C+++之间的不同之处 3

1.3学习C+++之前,是否需要先了解C 3

1.4成为程序员,是否需要懂数学 4

1.5术语 4

1.5.1编程 4

1.5.2可执行文件 4

1.6编辑和编译源文件 4

1.7关于示例源代码 5

1.8 Windows 5

1.8.1第1步:下载Code::Blocks 5

1.8.2第2步:安装Code::Blocks 5

1.8.3第3步:运行Code::Blocks 6

1.8.4错误调试 9

1.8.5使用Code::Blocks的原因 11

1.9 Macintosh 11

1.9.1 Xcode 12

1.9.2安装Xcode 5 12

1.9.3运行Xcode 12

1.9.4用Xcode创建第一个C++++程序 12

1.9.5安装Xcode 6beta 16

1.9.6运行Xcode 16

1.9.7用Xcode创建第一个C++++程序 17

1.9.8错误调试 20

1.10 Linux 21

1.10.1步骤1:安装g++++ 21

1.10.2步骤2:运行g++++ 22

1.10.3步骤3:运行你的程序 22

1.10.4步骤4:安装文本编辑器 23

1.10.5配置nano 23

1.10.6使用nano 23

第2章 C++基础 27

2.1 C+++简介 27

2.1.1最简单的C++++程序 27

2.1.2程序无法运行的原因 29

2.1.3 C++++程序的基本结构 30

2.2为程序添加注释 30

2.3像程序员一样思考,创建可复用的代码 31

2.4痛并快乐着的练习 32

2.5问答题 32

2.6实践题 33

第3章 用户交互和变量 34

3.1变量 34

3.1.1 C++++中的变量声明 34

3.1.2使用变量 34

3.1.3程序闪退的处理方法 35

3.1.4修改、使用和比较变量 36

3.1.5加减1的简写 36

3.2变量的使用和滥用 38

3.2.1 C++++中声明变量的常见错误 38

3.2.2区分大小写 39

3.2.3变量命名 39

3.3字符串存储 40

3.4基本类型的存储解析 42

3.5问答题 43

3.6实践题 44

第4章 if语句 45

4.1 if的基础语法 45

4.2表达式 46

4.2.1 truth 47

4.2.2布尔型 48

4.3 else语句 48

4.4 else-if 49

4.5字符串比较 49

4.6逻辑运算符在条件语句上的有趣应用 50

4.6.1逻辑非 50

4.6.2逻辑与 51

4.6.3逻辑或 51

4.6.4综合表达式 52

4.6.5逻辑表达式示例 53

4.7问答题 54

4.8实践题 54

第5章 循环 55

5.1 while循环 55

5.2 for循环 57

5.2.1变量初始化 57

5.2.2循环条件 57

5.2.3变量更新 57

5.3do-while循环 58

5.4控制循环 59

5.5嵌套循环 61

5.6选择合适的循环 62

5.6.1 for循环 62

5.6.2 while循环 62

5.6.3 do-while循环 63

5.7问答题 64

5.8实践题 64

第6章 函数 66

6.1函数语法 66

6.2局部变量和全局变量 68

6.2.1局部变量 68

6.2.2全局变量 69

6.2.3有关全局变量的警告 70

6.3使函数对调用有效 71

6.3.1函数定义和声明 71

6.3.2函数原型的应用示例 72

6.4把程序拆分成函数 73

6.4.1当需要重复代码时 73

6.4.2使代码更加易读 73

6.5命名和重载函数 73

6.6函数概述 74

6.7问答题 74

6.8实践题 75

第7章 如何解决问题 76

7.1只需判断数被除时有无余数 78

7.2效率和安全的简单说明 79

7.3不知道算法的情况下的解决方案 80

7.4实践题 82

第8章 switch-case和枚举 83

8.1比较switch-case和if-else 85

8.2使用枚举创建简单类型 86

8.3问答题 87

8.4实践题 88

第9章 随机 89

9.1获得随机数 90

9.2 bug和随机数 92

9.3问答题 92

9.4实践题 93

第二部分 数据处理 96

第10章 数组 96

10.1数组的基础语法 96

10.2数组使用示例 97

10.2.1使用数组存储排序 97

10.2.2用多维数组表示网格 98

10.3使用数组 98

10.3.1数组和for循环 98

10.3.2将数组传递给函数 99

10.3.3注销数组的末尾 101

10.4数组排序 101

10.5问答题 105

10.6实践题 106

第11章 结构体 107

11.1关联多个值 107

11.1.1语法 107

11.1.2传递结构体变量 109

11.2问答题 111

11.3实践题 112

第12章 指针简介 113

12.1忘记之前对指针的认知 113

12.2指针的概念以及关注指针的原因 113

12.3内存的概念 114

12.3.1变量与地址 115

12.3.2内存布局 116

12.4指针的其他优点(和缺点) 117

12.5问答题 118

12.6实践题 119

第13章 使用指针 120

13.1指针的语法 120

13.2指针的指向:变量的地址 121

13.3未初始化指针与空指针 125

13.4指针和函数 125

13.5引用 128

13.6问答题 129

13.7实践题 130

第14章 动态内存分配 131

14.1获得更多的新内存 131

14.1.1运行内存不足 132

14.1.2引用和动态分配 132

14.2指针和数组 132

14.3多维数组 134

14.4指针运算 135

14.4.1理解二维数组 136

14.4.2指向指针的指针 137

14.4.3指向指针的指针与二维数组 138

14.5盘点指针 139

14.6问答题 140

14.7实践题 141

第15章 数据结构简介与链表 142

15.1指针和结构体 144

15.2创建一个链表 145

15.2.1第一轮 146

15.2.2第二轮 147

15.3遍历链表 148

15.4盘点链表 150

15.5问答题 152

15.6实践题 153

第16章 递归 155

16.1如何看待递归 155

16.2递归和数据结构 157

16.3循环和递归 159

16.4栈 161

16.4.1栈的力量 163

16.4.2递归的缺点 164

16.4.3调试栈溢出 164

16.4.4性能 166

16.5盘点递归 166

16.6问答题 167

16.7实践题 167

第17章 二叉树 169

17.1在现实世界中使用二叉树 184

17.2问答题 186

17.3实践题 187

第18章 标准模板库 188

18.1 vector,大小可变的数组 189

18.1.1 vector的方法调用 190

18.1.2 vector的其他功能 190

18.2 map 191

18.3迭代器 192

18.4盘点STL 195

18.5进一步学习STL 196

18.6问答题 196

18.7实践题 197

第19章 更多关于字符串的内容 198

19.1读入字符串 198

19.2字符串长度和访问单个元素 200

19.3字符串搜索与子字符串 200

19.4通过引用传递 202

19.4.1 const传播 203

19.4.2 const和STL 204

19.5问答题 206

19.6实践题 206

第20章 使用Code::Blocks进行调试 208

20.1踏上调试之旅 209

20.2设置断点 211

20.2.1调试崩溃问题 216

20.2.2强行进入一个“悬停”程序 219

20.2.3修改变量 223

20.2.4总结 223

20.3实践题 223

20.3.1问题1:指数问题 223

20.3.2问题2:相加问题 224

20.3.3问题3:斐波那契程序的bug 225

20.3.4问题4:列表的错误读取和错误输出 225

第三部分 编写大规模程序 228

第21章 将程序分解 228

21.1理解C+++的构建过程 228

21.1.1预处理 228

21.1.2编译 230

21.1.3链接 230

21.1.4把编译和链接分开的原因 231

21.2如何把程序分开到不同的文件中 231

21.2.1第一步:将声明和定义分开 231

21.2.2第二步:找出哪些函数需要共享出去 232

21.2.3第三步:把共用的函数移到新的文件中 232

21.2.4看一个完整的例子 233

21.2.5关于头文件其他要注意的地方 237

21.2.6在开发环境中处理多个源文件 237

21.3问答题 240

21.4实践题 240

第22章 程序设计方法介绍 241

22.1冗余代码 241

22.2假定数据是如何存储的 242

22.3设计和注释 244

22.4问答题 245

第23章 隐藏结构化数据的表示 246

23.1问答题 250

23.2实践题 250

第24章类 251

24.1隐藏数据的存储方式 251

24.2声明一个类的实例 253

24.3类的职责 254

24.4小结 255

24.5问答题 255

24.6实践题 256

第25章 类的生命周期 257

25.1对象构造 257

25.1.1没有新建构造函数的结果 260

25.1.2初始化类的成员 260

25.1.3用初始化列表初始化常量字段 261

25.2解构对象 262

25.2.1 delete时的解构 264

25.2.2超出作用域时的解构 264

25.2.3由其他析构函数导致的解构 265

25.3复制类 266

25.3.1赋值操作符 267

25.3.2复制构造函数 269

25.3.3所有编译器生成的方法 270

25.3.4彻底地阻止复制 271

25.4问答题 272

25.5实践题 273

第26章 继承和多态 274

26.1C+++中的继承 275

26.1.1继承的别的作用以及误用的情况 278

26.1.2继承、对象构建和销毁 279

26.1.3多态和对象销毁 281

26.1.4对象切割的问题 283

26.1.5与子类共享代码 284

26.1.6 protected的数据 285

26.1.7属于类的数据 285

26.1.8如何实现多态 286

26.2问答题 288

26.3实践题 290

第27章 命名空间 291

27.1问答题 294

27.2实践题 295

第28章 文件I/O 296

28.1文件I/O基础 296

28.2文件格式 298

28.3写文件 301

28.4文件位置 302

28.5接受命令行参数 305

28.6二进制文件I/O 307

28.6.1处理二进制文件 309

28.6.2转换到char 309

28.6.3二进制I/O的一个例子 310

28.6.4把类存储到文件中 311

28.6.5读取二进制文件 312

28.7问答题 315

28.8实践题 315

第29章 C++中的模板 318

29.1模板函数 318

29.1.1类型推断 320

29.1.2鸭子类型 320

29.2模板类 321

29.3使用模板的一些小技巧 322

29.4模板小结 325

29.5问答题 328

29.6实践题 330

第四部分 其他 332

第30章 使用iomanip格式化输出 332

30.1处理空间问题 332

30.1.1使用setw设置字段宽度 332

30.1.2改变填充字符 333

30.1.3永久改变设置 333

30.2把你的iomanip知识汇总到一起 334

30.2.1输出数字 336

30.2.2使用setprecision来设置数值输出的精度 336

30.2.3如何处理贷币 337

30.2.4按不同的进制输出 337

第31章 异常和错误报告 338

第32章 最后的话 346

索引 368