零点起飞学C++

零点起飞学C++"

作者:秦广军等
ISBN:9787302317371
定价:¥55
字数:千字
页数:
出版时间:2013.07.01
开本:
版次:1-1
装帧:
出版社:清华大学出版社
简介

本书结合大量示例和实战案例,由浅入深、循序渐进地介绍C++语言的相关知识,尤其对面向过程的程序设计到面向对象的程序设计做了重点介绍和必要辨析。本书特意提供了典型习题及教学PPT,以方便教学。另外,作者专门为本书录制了大量的配套教学视频,以帮助读者更好地学习本书内容。这些视频和书中的实例源代码一起收录于本书的配书光盘中。

  本书共分4篇,第1篇面向过程的C++编程,包括走进C++、数据类型、变量和常量、运算符、表达式和语句、指针的操作、复合数据类型、函数、输入/输出,以及面向过程的编程案例。第2篇介绍面向对象的C++编程,包括封装、命名空间和作用域、继承和派生、多态、模板,以及面向对象的编程案例。第3篇介绍C++的高级开发技术,包括string类、异常处理、内存管理、预处理、错误和调试。第4篇介绍C++的应用开发实战,包括两种类型的案例,即用链表模拟堆栈和图的遍历(数据结构型)、用WinSocket编写客户机/服务器模式的系统和自定义协议及其实现的方法(网络型)。

  本书适合C++入门与想提高编程的人员阅读,也可作为大中专院校C++程序设计课程的教材。另外,本书也可供C++语言爱好者和从业者作为实际工作中的参考书籍。

前言

前    言

  C++是一门应用非常广泛的计算机程序设计语言。它既支持过程化程序设计,也支持面向对象程序设计。从操作系统、设备控制到数据库、网络、多媒体等众多的应用领域都能看到它的身影。C++语言是由C语言扩充而来。它在C语言的基础上扩展了面向对象特性,这使得C++非常流行。因此,它比C语言更适合人们的思考方式,并且比C语言要安全、可靠、有效。并且,它不像Java那样全面实现类的使用,这使得它很灵活,能够适应多种场合的需要。

  为了帮助读者更好地学习C++程序设计,笔者结合自己多年的C++开发经验编写了本书。本书结合大量多媒体教学视频,全面、系统地介绍了C++语言的相关开发知识,并以大量实例贯穿于全书的讲解之中,最后还详细介绍了两个实际应用案例的开发。学习完本书后,读者将能够对C++编程有一个全面的认识,具备编写C++程序的能力。 

本书特色介绍

  1.配多媒体教学视频

  本书提供大量的配套多媒体教学视频辅助教学,学习起来高效、直观,效果好。教学视频重点对书中的示例进行详细讲解,并演示运行效果,读者可以和图书结合起来学习。

  2.讲解深刻,内容全面

  本书力求向读者传达更多的C++知识,对每个知识点都详细讲解,并给出相应的实例。从C++基础到高级知识,从结构化编程到面向对象编程,涵盖了C++的众多知识点。同时,也向读者传达了成为一个合格的程序员所必须具备的知识和技能。

  3.讲解由浅入深,循序渐进

  本书的编排采用循序渐进的方式,内容梯度从易到难,讲解由浅入深,适合各个层次的读者阅读,并均有所获。

  4.写作细致,处处为读者着想

  本书内容编排、概念表述、语法讲解、示例讲解,以及源代码注释等都很细致,作者讲解时不厌其烦,细致入微,将问题讲解得很清楚,扫清了读者的学习障碍。

  5.贯穿大量的开发实例和技巧

  本书在讲解知识点时贯穿了大量短小精悍的典型实例,并给出了大量的开发技巧,力求让读者获得真正实用的知识。

  6.提供教学PPT,方便老师教学

  本书适合大中专院校和职业学校作为职业技能课程的教学用书,所以专门制作了教学PPT,以方便各院校的老师教学时使用。

本书内容体系

  第1篇  面向过程的C++编程(第1~11章)

  本篇主要内容包括:走进C++、数据类型、变量和常量、运算符、表达式、语句、指针、复合类型、函数,以及C++中的输入/输出等。第11章是对本篇知识点的综合运用与总结,用“图书管理系统”的案例讲解了结构化编程的方法。通过本篇的学习,读者将具备编写结构化编程的能力。

  第2篇  面向对象的C++编程(第12~18章)

  本篇主要内容包括:面向对象、封装、命名空间和作用域、继承和派生、多态,以及模板等。第18章是对本篇内容的总结与运用,用“日期类”的案例综合演练了面向对象的编程方法。通过本篇的学习,读者将具备编写面向对象程序的能力。

  第3篇  C++高级开发技术(第19~23章)

  本篇主要内容包括:string类、异常处理、内存管理、预处理,以及错误与调试等。通过本篇的学习,读者将掌握一些实用的编程技巧,这些内容对编写高效程序很有帮助。

  第4篇  应用开发实战(第24、25章)

  本篇是综合案例,分别给出了数据结构型和网络型编程实例。通过对这些实例的学习,让读者有实践项目的体会,以达到具有实战的能力。

配书光盘内容

* 本书重点内容的配套教学视频;

* 本书实例涉及的源代码。

本书读者

* C++入门读者;

* C++从业人员;

* 大中专院校学生;

* 社会培训学生;

* 毕业设计的学生;

* 程序设计爱好者。

本书阅读建议

* 建议没有基础的读者,从前向后顺次阅读,尽量不要跳跃。

* 书中的实例和示例建议读者都要亲自上机动手实践,学习效果更好。

* 课后习题都动手做一做,以检查自己对本章内容的掌握程度。如果不能顺利完成,建议重新学习本章内容。

* 学习每章内容时,建议读者先仔细阅读书中的讲解,然后再结合本章教学视频学习,学习效果更佳。

本书作者

  本书由秦广军主笔编写。其他参与编写的人员有毕梦飞、蔡成立、陈涛、陈晓莉、陈燕、崔栋栋、冯国良、高岱明、黄成、黄会、纪奎秀、江莹、靳华、李凌、李胜君、李雅娟、刘大林、刘惠萍、刘水珍、马月桂、闵智和、秦兰、汪文君、文龙、陈冠军、张昆。

  阅读本书的过程中,若有任何疑问,可以发邮件到book@wanjuanchina.net或bookservice2008@163.com,或者到www.wanjuanchina.net的图书论坛上留言,以获得帮助。

  

  编著者

  

  ??

  

  ??

  

  ??

  

  ??

  

零点起飞学C++

  

  

·II·

  

  

·III·

  

  

  

  

  

  

目录

目    录

第1篇  面向过程的C++编程

第1章  走进C++( 教学视频:27分钟) 2

1.1  认识C++ 2

1.1.1  C++的发展历程 2

1.1.2  C++的应用领域 2

1.2  C++开发环境的搭建 3

1.2.1  安装过程 3

1.2.2  开发环境介绍 4

1.3  认识第一个程序 7

1.4  小结 11

第2章  数据类型( 教学视频:38分钟) 12

2.1  数据的表示——数字运算型 12

2.1.1  表示整数的类型——整型 12

2.1.2  表示小数的类型——实型 13

2.1.3  浮点型 14

2.1.4  双精度型 15

2.2  是非问题——逻辑运算型 15

2.2.1 “并且”的运算——与运算 15

2.2.2 “或者”的运算——或运算 16

2.2.3 “No”的运算——非运算 16

2.2.4  逻辑运算的组合 17

2.3  文本的基础——字符型和字符串 17

2.3.1  单个字符的表示——字符型 17

2.3.2  多个字符的表示——字符串 19

2.3.3  字符与字符串的差异 19

2.4  复杂数据的表示——复合类型 19

2.5  小结 20

2.6  习题 20

第3章  数据的指代——变量和常量( 教学视频:50分钟) 21

3.1  指代可变的量——变量 21

3.1.1  变量是什么 21

3.1.2  多种多样的变量 23

3.1.3  变量的初始化 25

3.1.4  如何对变量命名 26

3.2  指代不变的量——常量 26

3.2.1  常量是什么 26

3.2.2  多种多样的常量 27

3.2.3  使用常量需要注意的问题 29

3.2.4  常量的初始化 29

3.2.5  如何对常量命名 29

3.3  小结 30

3.4  习题 30

第4章  数据运算的核心——运算符( 教学视频:48分钟) 31

4.1  加减乘除的运算——算术运算符 31

4.2  是是非非的运算——逻辑运算符 34

4.3  比较大小的运算——关系运算符 34

4.4  位运算 37

4.5  最基础的运算——赋值 40

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

4.6.1  优先级 41

4.6.2  结合性 44

4.7  小结 44

4.8  习题 44

第5章  运算的最小单位——表达式( 教学视频:46分钟) 46

5.1  使用表达式 46

5.1.1  表达式的种类 46

5.1.2  表达式到底是什么 47

5.1.3  如何写表达式 47

5.2  数据类型的转换 48

5.2.1  隐式转换 48

5.2.2  显式转换 50

5.3  小结 53

5.4  习题 53

第6章  程序的最小单位——语句( 教学视频:73分钟) 55

6.1  认识语句 55

6.1.1  单一语句——简单语句 55

6.1.2  多个语句——语句块 56

6.2  程序的执行顺序 58

6.3  因地制宜——选择型语句 58

6.3.1  如果…就…——if语句 58

6.3.2  多选一——switch语句 61

6.4  周而复始——循环型语句 65

6.4.1  只要…就…——while语句 65

6.4.2  如果…继续…——do…while语句 66

6.4.3  for语句 67

6.5  各种标志——标签语句 69

6.5.1  程序中的标志——普通标签语句 69

6.5.2  特殊标签语句 71

6.6  快捷通道——跳转语句 71

6.6.1  跳出来——break语句 71

6.6.2  continue语句 72

6.6.3  goto语句 73

6.7  语句嵌套 74

6.7.1  自增 74

6.7.2  自减 74

6.7.3  逗号语句 75

6.7.4  选择的简化版——?…:语句 75

6.8  小结 76

6.9  习题 76

第7章  指针( 教学视频:63分钟) 78

7.1  什么是地址 78

7.2  如何定义指针 79

7.2.1  指针的定义 79

7.2.2  向左向右分析指针 80

7.2.3  sizeof 80

7.3  指针的类型 81

7.4  初始化指针 83

7.4.1  用指针的地址进行初始化 84

7.4.2  用变量的地址进行初始化 84

7.4.3  用new分配的内存单元进行初始化 85

7.4.4  用malloc分配的内存单元进行初始化 85

7.5  指针的运算 87

7.5.1  算术运算 87

7.5.2  关系运算 89

7.6  指针嵌套——指针的指针 90

7.7  使用指针 92

7.7.1  给指针赋值 92

7.7.2  *操作符 93

7.8  指针与引用 93

7.9  特殊指针 96

7.9.1  void型指针 96

7.9.2  空指针 97

7.10  小结 98

7.11  习题 98

第8章  多数据的处理——复合类型( 教学视频:60分钟) 100

8.1  静态数组 100

8.1.1  指定维数完整 100

8.1.2  维数不全 101

8.1.3  无维数 101

8.2  动态数组 101

8.2.1  基于堆的动态数组 101

8.2.2  基于栈的动态数组 103

8.3  数据元素的存放 104

8.3.1  列优先存放 104

8.3.2  行优先存放 105

8.4  字符数组 105

8.4.1  定义和使用 106

8.4.2  字符数组和字符串 106

8.4.3  字符数组和字符串指针 107

8.5  初始化 107

8.5.1  定义时初始化 107

8.5.2  赋值初始化数组 109

8.6  指针与数组 110

8.6.1  指向数组的指针 110

8.6.2  指针数组 111

8.7  数组的使用 112

8.7.1  索引方式 112

8.7.2  指针方式 113

8.8  枚举 114

8.9  结构体 116

8.10  共用体 118

8.11  自定义类型 120

8.11.1  typedef的作用 120

8.11.2  定义自己的类型 122

8.12  小结 124

8.13  习题 124

第9章  通用语句块——函数( 教学视频:51分钟) 125

9.1  定义函数 125

9.1.1  定义方式 125

9.1.2  函数定义的示例 127

9.2  不同的函数 130

9.2.1  从返回值类型来划分 130

9.2.2  从作用域来划分 130

9.2.3  从C++类的成员函数特性来划分 132

9.3  函数通用的关键——参数 133

9.3.1  定义时候的参数——形参 133

9.3.2  调用时候的参数——实参 134

9.4  有借有还——函数返回值 135

9.4.1  返回值 136

9.4.2  返回表达式 136

9.5  调用函数 136

9.5.1  单独调用 136

9.5.2  函数表达式调用 137

9.5.3  嵌套调用 137

9.5.4  参数传递方式 138

9.6  自己调用自己——递归函数 139

9.7  函数指针 140

9.8  函数作为参数 141

9.9  main()函数分析 142

9.10  函数的规范编写 144

9.11  小结 144

9.12  习题 144

第10章  C++中的输入/输出( 教学视频:49分钟) 146

10.1  输入/输出库iostream 146

10.1.1  操作标准I/O 146

10.1.2  读写文件I/O 147

10.1.3  操作字符串I/O 148

10.2  输出流 149

10.2.1  输出预定义类型数据 149

10.2.2  输出自定义数据类型 150

10.3  输入流 151

10.3.1  输入预定义类型数据 151

10.3.2  输入自定义类型数据 152

10.4  格式化输入/输出 153

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

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

10.5  使用文件 157

10.5.1  打开/关闭文件 157

10.5.2  顺序读写文件 159

10.5.3  随机读写文件 160

10.6  小结 162

10.7  习题 162

第11章  面向过程的程序设计实战( 教学视频:52分钟) 164

11.1  问题定义 164

11.2  需求分析 164

11.3  总体设计 165

11.3.1  数据结构 165

11.3.2  图书基础数据维护模块 166

11.3.3  图书借阅模块 168

11.3.4  图书返还模块 168

11.3.5  会员基础数据维护模块 169

11.3.6  总体流程图 171

11.4  编码 172

11.4.1  主控文件bookmanager.cpp 172

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

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

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

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

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

11.5  小结 187

第2篇  面向对象的C++编程

第12章  面向对象( 教学视频:23分钟) 190

12.1  面向对象的概念 190

12.2  面向对象的程序设计 192

12.3  对象和类 192

12.4  面向对象的特征 193

12.4.1  封装 193

12.4.2  继承 194

12.4.3  多态 194

12.5  小结 195

12.6  习题 195

第13章  面向对象的本质——封装( 教学视频:55分钟) 196

13.1  构建类 196

13.1.1  声明类 196

13.1.2  构建属性 198

13.1.3  构建类的方法 198

13.1.4  使用构造函数 199

13.1.5  使用析构函数 202

13.1.6  可以共享的成员——静态成员 203

13.1.7  构建友元 204

13.1.8  访问修饰符 206

13.1.9  指向类成员的指针 207

13.1.10  类中定义的类——嵌套类 208

13.1.11  类文件的组织 209

13.2  类的具体表现——对象 211

13.2.1  定义对象 211

13.2.2  使用对象 212

13.2.3  指向自身的指针——this指针 214

13.3  小结 214

13.4  习题 214

第14章  命名空间和作用域( 教学视频:21分钟) 216

14.1  为什么使用命名空间 216

14.2  定义命名空间 216

14.3  如何使用命名空间 218

14.4  作用域 220

14.4.1  什么叫作用域 220

14.4.2  作用域的分类 221

14.5  小结 223

14.6  习题 223

第15章  继承和派生( 教学视频:62分钟) 225

15.1  继承和派生的关系 225

15.2  派生一个类 225

15.2.1  派生的起点——基类 226

15.2.2  派生的方式 227

15.2.3  使用构造函数 229

15.2.4  使用析构函数 231

15.2.5  同名方法的使用 232

15.2.6  同名属性的使用 234

15.3  单重继承 235

15.4  多重继承 235

15.4.1  为什么要多重继承 235

15.4.2  构造多重继承 236

15.4.3  析构函数和构造函数 237

15.4.4  多重继承的二义性 239

15.5  虚继承与虚基类 241

15.5.1  什么是虚基承 241

15.5.2  初始化虚基类 244

15.5.3  集成虚基类 246

15.6  继承中的限制 246

15.7  小结 247

15.8  习题 247

第16章  灵活的代码——多态( 教学视频:54分钟) 250

16.1  什么是多态 250

16.2  宏多态 251

16.3  虚函数 252

16.3.1  虚函数的作用 252

16.3.2  静态绑定 254

16.3.3  动态绑定 254

16.3.4  纯虚函数 254

16.4  抽象类 256

16.4.1  什么是抽象类 256

16.4.2  抽象类的派生 256

16.5  运算符的多态——运算符重载 257

16.5.1  为什么要重载运算符 257

16.5.2  重载的限制 258

16.5.3  重载一元运算符 259

16.5.4  重载二元运算符 260

16.6  函数重载 261

16.6.1  参数类型不同 261

16.6.2  参数个数不同 262

16.7  流的重载 263

16.7.1  流插入的重载 263

16.7.2  流提取的重载 264

16.8  覆盖 266

16.8.1  覆盖函数 266

16.8.2  覆盖变量 267

16.9  小结 268

16.10  习题 268

第17章  模板( 教学视频:25分钟) 271

17.1  什么是模板 271

17.2  类模板 272

17.2.1  定义类模板 272

17.2.2  使用类模板 273

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

17.3  函数模板 276

17.3.1  定义函数模板 276

17.3.2  使用函数模板 276

17.3.3  函数模板和模板函数的区别 278

17.4  模板的实例化 278

17.5  模板的作用 279

17.6  基于模板的元编程 279

17.6.1  什么是元编程 279

17.6.2  基于模板的元编程 280

17.7  小结 281

17.8  习题 281

第18章  面向对象实战( 教学视频:18分钟) 283

18.1  问题定义 283

18.2  需求分析 283

18.3  面向对象分析与设计 284

18.3.1  类结构的设计 284

18.3.2  类的可见性 284

18.3.3  类的结构图 285

18.4  编码和测试 286

18.4.1  预编译头文件Stdafx.h 286

18.4.2  CCNTime类的头文件Cntime.h 287

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

18.4.4  主文件main.cpp 295

18.5  小结 296

第3篇  C++高级开发技术

第19章  文本处理—— string类( 教学视频:13分钟) 298

19.1  定义字符串 298

19.2  string类的常用方法 300

19.3  string类的运算 302

19.3.1  查找字符串 302

19.3.2  替换字符串 304

19.3.3  取子字符串 305

19.3.4  比较字符串 305

19.3.5  连接字符串 306

19.3.6  插入字符串 306

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

19.4  小结 307

19.5  习题 308

第20章  不让程序出错——异常处理( 教学视频:16分钟) 309

20.1  异常处理机制 309

20.2  抛出异常 309

20.3  捕获异常 311

20.4  什么是异常处理的规格 313

20.5  常见的标准异常 313

20.6  小结 314

20.7  习题 314

第21章  内存管理( 教学视频:21分钟) 316

21.1  内存的分类 316

21.2  管理栈内存 317

21.2.1  申请栈内存 317

21.2.2  使用栈内存 318

21.2.3  释放栈内存 320

21.2.4  获取栈内存 320

21.3  管理堆内存 321

21.3.1  申请堆内存 321

21.3.2  使用堆内存 321

21.3.3  释放堆内存 322

21.3.4  改变大小 323

21.4  小结 324

21.5  习题 324

第22章  预处理( 教学视频:21分钟) 325

22.1  什么是预处理 325

22.2  常见的预处理 325

22.2.1  文件包含#include 326

22.2.2  布局控制#pragma 326

22.2.3  宏替换#define 330

22.2.4  条件编译 331

22.3  其他预处理指令 332

22.4  小结 333

22.5  习题 333

第23章  错误与调试( 教学视频:46分钟) 335

23.1  什么是错误 335

23.2  错误的种类 335

23.2.1  语法错误 335

23.2.2  链接错误 336

23.2.3  运行时错误 338

23.3  排查错误 339

23.3.1  看懂错误信息 339

23.3.2  错误发现的常见方法 339

23.3.3  如何调试 340

23.4  常见bug的分类 340

23.5  调试的窍门 341

23.5.1  使用断言assert 341

23.5.2  使用断言verify 342

23.5.3  assert 和 verify的差异 342

23.5.4  轨迹跟踪 343

23.5.5  使用断点 344

23.6  使用交互式调试 345

23.6.1  设置和删除断点 345

23.6.2  使用Debug窗口 345

23.6.3  使用Watch面板 347

23.6.4  使用步进方式调试 347

23.7  小结 347

23.8  习题 348

第4篇  应用开发实战

第24章  数据结构应用实战( 教学视频:23分钟) 350

24.1  采用链表模拟堆栈 350

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

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

24.1.3  链栈类的使用文件test24_1.cpp 354

24.2  遍历图 355

24.2.1  存储/遍历图 355

24.2.2  图遍历的代码 356

24.3  小结 359

第25章  网络应用案例( 教学视频:33分钟) 360

25.1  客户机/服务器通信 360

25.1.1  WinSocket 2常用函数 360

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

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

25.1.4  服务器端实现 367

25.1.5  客户端实现 368

25.2  自定义协议 369

25.2.1  自定义协议 370

25.2.2  自定义协议的实现 371

25.3  小结 374

  

  

  ??

  

  ??

  

  ??

  

  ??

  

零点起飞学C++

  

  

·XIV·

  

  

·XV·

  

  

  

  

  

  

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个