《C++从入门到实践》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:秦广军等编著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2009
  • ISBN:9787302200260
  • 页数:456 页
图书介绍:本书内容包括四大部分:第一部分是基本语法和概念;第二部分是面向对象编程;第三部分是高级篇,包括string类、异常处理、内存管理、预处理、错处和调试;第四部分是案例篇。

第1篇 面向过程的C++编程第1章 C++预备知识 2

1.1 概述 2

1.1.1 C++的发展史 2

1.1.2 为什么要选择C++ 2

1.1.3 对面向对象方法的支持 3

1.2 开发工具 3

1.2.1 常见的C++开发工具 3

1.2.2 Visual C++ 6.0开发环境简介 5

1.2.3 Visual C++ 6.0开发环境的使用 6

1.2.4 Visual C++ 6.0使用示例 9

1.3 程序结构 14

1.3.1 第一个程序 14

1.3.2 文件的组织 16

1.4 编码规范 16

1.4.1 风格指南 16

1.4.2 注释的使用 17

1.4.3 美化代码 18

1.5 标识符 19

1.5.1 保留字 19

1.5.2 标识符命名 19

1.6 上机实践 20

1.7 常见问题及解答 20

1.8 小结 21

1.9 习题 21

第2章 数据类型 22

2.1 数字运算型 22

2.1.1 整型 22

2.1.2 实型 23

2.1.3 浮点型 24

2.1.4 双精度型 25

2.2 逻辑运算型 25

2.2.1 与运算 25

2.2.2 或运算 26

2.2.3 非运算 26

2.2.4 逻辑运算的组合 27

2.3 字符型和字符串 27

2.3.1 字符 28

2.3.2 字符串 29

2.3.3 字符与字符串的差异 29

2.4 复合类型 30

2.5 本章实例 30

2.6 上机实践 31

2.7 常见问题及解答 32

2.8 小结 32

2.9 习题 32

第3章 变量和常量 33

3.1 变量 33

3.1.1 什么叫变量 33

3.1.2 种类 36

3.1.3 初始化 37

3.1.4 变量的命名规范 38

3.2 常量 39

3.2.1 什么叫常量 39

3.2.2 种类 39

3.2.3 常量使用的几点说明 41

3.2.4 初始化 42

3.2.5 常量的命名规范 42

3.3 本章实例 42

3.4 上机实践 45

3.5 常见问题与解答 45

3.6 小结 46

3.7 习题 46

第4章 运算符 47

4.1 算术运算符 47

4.2 逻辑运算符 50

4.3 关系运算符 51

4.4 位运算 53

4.5 赋值 57

4.6 运算符的优先级和结合性 58

4.6.1 优先级 58

4.6.2 结合性 61

4.7 本章实例 61

4.8 上机实践 63

4.9 常见问题及解答 64

4.10 小结 65

4.11 习题 65

第5章 表达式 66

5.1 定义和书写 66

5.1.1 表达式的分类 66

5.1.2 表达式的意义 67

5.1.3 表达式的书写 67

5.2 类型转换 68

5.2.1 隐式类型转换 68

5.2.2 显式类型转换 71

5.3 本章实例 74

5.4 上机实践 74

5.5 常见问题及解答 76

5.6 小结 76

5.7 习题 76

第6章 语句 78

6.1 简单语句和语句块 78

6.1.1 简单语句 78

6.1.2 语句块 79

6.2 程序的执行结构 81

6.3 选择型语句 81

6.3.1 if语句 82

6.3.2 switch语句 85

6.4 循环型语句 88

6.4.1 while语句 88

6.4.2 do...while语句 89

6.4.3 for语句 90

6.5 标签语句 92

6.5.1 普通标签语句 92

6.5.2 特殊标签语句 94

6.6 跳转语句 94

6.6.1 break语句 95

6.6.2 continue语句 95

6.6.3 goto语句 96

6.7 语句嵌套 97

6.7.1 自增 97

6.7.2 自减 98

6.7.3 逗号语句 98

6.7.4 ?语句 99

6.8 本章实例 100

6.9 上机实践 101

6.10 常见问题及解答 101

6.11 小结 102

6.12 习题 102

第7章 指针 104

7.1 地址是什么 104

7.2 指针的定义方式 105

7.2.1 指针的定义 105

7.2.2 指针的分析 106

7.2.3 sizeof运算符 106

7.3 指针的种类 108

7.4 初始化 109

7.4.1 用另一个指针的地址初始化 110

7.4.2 用某个变量的地址初始化 110

7.4.3 用new分配内存单元 111

7.4.4 用malloc分配内存单元 112

7.5 指针的运算 113

7.5.1 算术运算 113

7.5.2 关系运算 116

7.6 指针的指针 117

7.7 指针的使用 119

7.7.1 指针的赋值 119

7.7.2 操作符 120

7.8 引用与指针 121

7.9 特殊指针 123

7.9.1 void型指针 123

7.9.2 空指针 124

7.10 指针的命名规范 125

7.11 本章实例 126

7.12 上机实践 128

7.13 常见问题及解答 128

7.14 小结 129

7.15 习题 129

第8章 复合类型 131

8.1 定义数组 131

8.1.1 维数完整 131

8.1.2 维数不全 132

8.1.3 无维数 132

8.2 动态数组 132

8.2.1 在堆上分配空间的动态数组 133

8.2.2 在栈上分配空间的“伪动态”数组 134

8.3 存储 135

8.3.1 按列优先顺序(column maior order) 136

8.3.2 按行优先顺序(row major order) 136

8.4 字符数组 137

8.4.1 字符数组的定义和使用 137

8.4.2 字符数组和字符串间的区别 138

8.4.3 字符数组和字符串指针变量 138

8.5 初始化 139

8.5.1 数组在定义时的初始化 139

8.5.2 用赋值语句初始数组 140

8.6 指针与数组 141

8.6.1 指向数组的指针 141

8.6.2 指针数组 142

8.7 数组的使用 143

8.7.1 索引方式 143

8.7.2 指针方式 145

8.8 枚举 146

8.9 结构体 148

8.10 共用体 150

8.11 自定义型(typedef的使用) 152

8.11.1 typedef的作用 152

8.11.2 定义自己的类型 154

8.12 本章实例 156

8.13 上机实践 157

8.14 常见问题及解答 157

8.15 小结 158

8.16 习题 158

第9章 函数 160

9.1 函数的定义 160

9.1.1 函数的定义方式 160

9.1.2 函数定义的示例 162

9.2 函数的类型 165

9.2.1 根据函数的返回值类型来划分 165

9.2.2 根据作用域来划分 166

9.2.3 根据C++类的成员函数特性来划分 167

9.3 函数的参数 168

9.3.1 形参 169

9.3.2 实参 169

9.4 返回值与返回语句 171

9.4.1 返回值 171

9.4.2 返回语句 171

9.5 函数调用 172

9.5.1 单独调用 172

9.5.2 函数表达式调用 172

9.5.3 函数调用作为实参 173

9.5.4 参数传递方式 173

9.6 递归函数 174

9.7 指向函数的指针 176

9.8 函数作为参数 176

9.9 main()函数及命令行处理 178

9.10 函数的书写规范 180

9.11 本章实例 180

9.12 上机实践 181

9.13 常见问题及解答 182

9.14 小结 182

9.15 习题 182

第10章 C++中的输入/输出 184

10.1 iostream库 184

10.1.1 标准I/O 184

10.1.2 文件I/O 185

10.1.3 字符串I/O 186

10.2 输出 187

10.2.1 预定义类型的输出 187

10.2.2 自定义类型的输出 188

10.3 输入 189

10.3.1 预定义类型的输入 189

10.3.2 自定义类型的输入 190

10.4 输入/输出的格式化 191

10.4.1 使用ios类成员函数进行格式化 191

10.4.2 使用操纵函数进行格式化控制 194

10.5 文件 195

10.5.1 文件的打开与关闭 195

10.5.2 文件的顺序读写 197

10.5.3 文件的随机读写 198

10.6 本章实例 200

10.7 上机实践 202

10.8 常见问题及解答 202

10.9 小结 203

10.10 习题 203

第11章 面向过程的程序设计案例 204

11.1 问题定义 204

11.2 需求分析 205

11.3 总体设计 205

11.3.1 数据结构 205

11.3.2 图书基础数据维护 206

11.3.3 图书借阅 208

11.3.4 图书返还 209

11.3.5 会员基础数据维护 209

11.3.6 总体流程图 211

11.4 编码 212

11.4.1 主控文件bookmanager.cpp 212

11.4.2 菜单处理头文件mainfunction.h 212

11.4.3 数据结构头文件datainfo.h 213

11.4.4 功能函数头文件subfunction.h 213

11.4.5 菜单处理实现文件mainfunction.cpp 214

11.4.6 功能函数实现文件subfunction.cpp 217

11.5 小结 227

第2篇 面向对象的C++程序设计第12章 面向对象 230

12.1 概念 230

12.2 面向对象的程序设计 232

12.3 对象和类 232

12.4 面向对象的3大特点 233

12.4.1 封装 233

12.4.2 继承 234

12.4.3 多态 234

12.5 面向对象的软件开发 234

12.5.1 面向对象分析 235

12.5.2 面向对象设计 235

12.5.3 面向对象测试 236

12.5.4 面向对象维护 236

12.6 本章实例 236

12.7 常见问题及解答 238

12.8 小结 239

12.9 习题 239

第13章 封装 240

13.1 类 240

13.1.1 类的声明 240

13.1.2 类的属性 242

13.1.3 类的方法 243

13.1.4 构造函数 244

13.1.5 析构函数 247

13.1.6 静态成员 248

13.1.7 友元 249

13.1.8 修饰符 251

13.1.9 指向类成员的指针 252

13.1.10 嵌套类 253

13.1.11 类文件的组织 254

13.2 对象 256

13.2.1 对象的定义 256

13.2.2 对象的使用 257

13.2.3 this指针 259

13.3 本章实例 260

13.4 上机实践 261

13.5 常见问题及解答 262

13.6 小结 262

13.7 习题 262

第14章 命名空间和作用域 263

14.1 概述 263

14.2 命名空间的定义 263

14.3 如何使用命名空间 265

14.4 作用域 267

14.4.1 什么叫作用域 267

14.4.2 作用域的分类 268

14.5 本章实例 270

14.6 上机实践 276

14.7 常见问题及解答 277

14.8 小结 277

14.9 习题 277

第15章 继承和派生 278

15.1 继承和派生的关系 278

15.2 派生一个类 279

15.2.1 基类 279

15.2.2 派生 280

15.2.3 构造函数 282

15.2.4 析构函数 284

15.2.5 同名方法的使用 286

15.2.6 同名属性的使用 287

15.3 单重继承 288

15.4 多重继承 289

15.4.1 多重继承的目的 289

15.4.2 构造多重继承 289

15.4.3 析构函数和构造函数 290

15.4.4 多重继承的二义性 292

15.5 虚继承与虚基类 295

15.5.1 虚基类的作用 295

15.5.2 虚基类初始化 298

15.5.3 虚基类的继承 300

15.6 继承中的限制 300

15.7 本章实例 301

15.8 上机实践 304

15.9 常见问题及解答 305

15.10 小结 306

15.11 习题 306

第16章 多态 307

16.1 概念 307

16.2 宏多态 308

16.3 虚函数 309

16.3.1 虚函数的作用 309

16.3.2 静态绑定 311

16.3.3 动态绑定 312

16.3.4 纯虚函数 312

16.4 抽象类 313

16.4.1 什么是抽象类 313

16.4.2 抽象类的派生 314

16.5 运算符重载 315

16.5.1 为什么要重载运算符 315

16.5.2 重载的限制 316

16.5.3 重载一元运算符 317

16.5.4 重载二元运算符 317

16.6 函数重载 319

16.6.1 参数类型不同 319

16.6.2 参数个数不同 320

16.7 流的重载 321

16.7.1 流插入的重载 321

16.7.2 流提取的重载 322

16.8 覆盖 324

16.8.1 覆盖函数 324

16.8.2 覆盖变量 326

16.9 本章实例 327

16.10 上机实践 329

16.11 常见问题及解答 330

16.12 小结 330

16.13 习题 330

第17章 模板 332

17.1 模板的概念 332

17.2 类模板 333

17.2.1 类模板的定义 333

17.2.2 类模板的示例 334

17.2.3 类模板和模板类的区别 336

17.3 函数模板 337

17.3.1 函数模板的定义 337

17.3.2 函数模板的示例 337

17.3.3 函数模板与模板函数的区别 339

17.4 模板的实例化 339

17.5 模板的作用 340

17.6 基于模板的元编程简介 340

17.6.1 元编程的概念 341

17.6.2 基于模板的元编程 341

17.7 本章实例 342

17.8 上机实践 345

17.9 常见问题及解答 345

17.10 小结 346

17.11 习题 346

第18章 面向对象的程序设计案例 347

18.1 问题定义 347

18.2 需求分析 347

18.3 面向对象分析与设计 348

18.3.1 类结构的设计 348

18.3.2 类的可见性 348

18.3.3 类的结构图 349

18.4 编码和测试 350

18.4.1 预编译头文件Stdafx.h 350

18.4.2 CCNTime类的头文件Cntime.h 351

18.4.3 CCNTime类的实现文件Cntime.cpp 352

18.4.4 主文件main.cpp 359

18.5 小结 360

第3篇 高级篇 362

第19章 string类 362

19.1 定义 362

19.2 string类的方法 364

19.3 string类的运算 366

19.3.1 字符串查找 367

19.3.2 字符串替换 369

19.3.3 取子字符串 370

19.3.4 字符串比较 370

19.3.5 字符串连接 371

19.3.6 字符串插入 371

19.3.7 获取字符串大小和容量 371

19.4 本章实例 372

19.5 上机实践 375

19.6 常见问题及解答 376

19.7 小结 376

19.8 习题 376

第20章 异常处理 377

20.1 异常处理的机制 377

20.2 异常的抛出 377

20.3 异常的捕获 379

20.4 异常处理的规格 381

20.5 常见的标准异常 382

20.6 本章实例 382

20.7 上机实践 384

20.8 常见问题及解答 385

20.9 小结 386

20.10 习题 386

第21章 内存管理 387

21.1 内存的分类 387

21.2 栈内存管理 388

21.2.1 申请栈内存 388

21.2.2 使用栈内存 389

21.2.3 释放栈内存 391

21.2.4 改变大小 391

21.3 堆内存管理 392

21.3.1 申请堆内存 392

21.3.2 使用堆内存 393

21.3.3 释放堆内存 394

21.3.4 改变大小 395

21.4 本章实例 396

21.5 上机实践 397

21.6 常见问题及解答 397

21.7 小结 398

21.8 习题 398

第22章 预处理 400

22.1 什么叫预处理 400

22.2 常见的预处理 400

22.2.1 文件包含 401

22.2.2 布局控制 401

22.2.3 宏替换 405

22.2.4 条件编译 406

22.3 其他预处理指令 407

22.4 本章实例 408

22.5 上机实践 410

22.6 常见问题及解答 411

22.7 小结 411

22.8 习题 412

第23章 错误与调试 413

23.1 错误的定义 413

23.2 错误的处理 413

23.2.1 语法错误 414

23.2.2 链接错误 415

23.2.3 运行时错误 416

23.3 错误的排查 417

23.3.1 错误信息的理解 417

23.3.2 错误发现的方法 417

23.3.3 调试的原则 418

23.4 常见bug的分类 419

23.5 调试的技巧 419

23.5.1 断言assert 420

23.5.2 verify 420

23.5.3 assert与Verify的差异 421

23.5.4 轨迹跟踪 421

23.5.5 断点 423

23.6 Visual C++编程环境中的交互式调试 423

23.6.1 设置和删除断点 423

23.6.2 Debug窗口 424

23.6.3 Watch面板 425

23.6.4 调试的步进方式 425

23.7 本章实例 426

23.8 上机实践 427

23.9 常见问题及解答 428

23.10 小结 428

23.11 习题 428

第4篇 应用篇 432

第24章 数据结构案例 432

24.1 案例1——用链表模拟堆栈 432

24.1.1 链栈类的定义文件LinkStack.h 432

24.1.2 链栈类的实现文件LinkStack.cpp 433

24.1.3 链栈类的使用文件example.cpp 435

24.2 案例2——图的遍历 436

24.2.1 图的存储及遍历 437

24.2.2 图遍历的代码 437

24.3 小结 441

第25章 网络应用案例 442

25.1 案例1——客户机/服务器案例 442

25.1.1 Winsocket 2常用函数 442

25.1.2 服务器/客户机编程模式 445

25.1.3 服务器和客户端公用文件 446

25.1.4 服务器端实现 449

25.1.5 客户端实现 450

25.2 案例2——自定义协议 451

25.2.1 自定义协议 452

25.2.2 自定义协议的实现 453

25.3 小结 456