C++从入门到实践

C++从入门到实践"

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

本书由浅入深、循序渐进地从面向过程到面向对象逐步讲授如何使用C++开发系统。全书内容包括4大部分,第1部分是基本语法和概念,包括C++预备知识、Visual C++开发环境、基本数据类型、变量和常量、C++中的运算符、表达式和语句、指针的操作、复合数据类型、函数、输入输出等,还给出了面向过程的编程方法。第2部分是面向对象编程,包括封装、命名空间和作用域、继承和派生、多态、模板,以及面向对象的编程案例。第3部分是高级篇,包括string类、异常处理、内存管理、预处理、错处和调试。第4部分是应用篇,包括4种类型的案例,即用链表模拟堆栈和图的遍历(数据结构型)、用WinSocket编写客户机/服务器模式的系统和自定义协议及其实现的方法(网络型)、利用ODBC API函数实现电话簿和成绩管理(数据库型)、用文件流实现的特征码查毒方法及用堆栈链表实现的表达式求值(其他类型)。

本书适合广大C++语言爱好者和从业者,也适合大专院校学生阅读。该书既能满足初学者入门的需求,也能满足有一定经验的读者继续深入和提高。

前言

前    言

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

为了方便广大读者学习,我们花费了一年时间写了这本书。本书全面地介绍了C++知识,并以实例介绍了编写C++系统的方法。学完本书之后,读者将能够对C++编程有一个全面的认识,具备编写C++程序的能力。

本书的特点

1.提供多媒体语音视频讲解和交互式教学体验

作者为本书录制了几百分钟的多媒体语音视频进行讲解,同时还制作了交互式教学内容。读者可以在提示下进行各种C++实战入门操作,以更快地掌握C++。

2.提供完善的售后服务

本书提供学习论坛http://www.wanjuanchina.net,读者可以讨论技术,笔者会及时回答提问,并提供各种技术文章,帮助读者提高开发水平。本书还提供服务邮箱fwjccc@sina.com,读者购买书后向该邮箱发一封邮件,即可获取各种C++学习资料。

3.讲解深刻,内容全面

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

4.实例众多,深入剖析

根据我们多年的经验,要想学好一门编程语言,重要的是要多看并分析代码,要多练并研究代码。只有先看懂了别人的代码,吸收别人的经验,自己才能写出优秀的代码。而多练则是掌握这些经验和知识点的必由之路。因此本书设计了众多的实例,其中包括小型例子284个,大中型例子26个。本书对每个实例都详细讲解,深入分析,让读者可以轻松阅读和掌握代码传达的知识点。

本书的内容

本书共分4篇,分别为面向过程的C++编程、面向对象的C++程序设计、高级篇和应         用篇。

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

第2篇(第12~18章):介绍了C++面向对象编程的知识。前6章内容包括面向对象的思想、封装、命名空间和作用域、继承和派生、多态、模板等。第18章是对前6章内容的总结与运用,用“日期类”的案例综合演练了面向对象的编程方法。通过本篇的学习,读者将具备编写面向对象程序的能力。

第3篇(第19~23章):介绍了C++程序设计中的高级知识,内容包括string类、异常处理、内存管理、预处理,以及错误与调试等。通过本篇的学习,读者将掌握一些实用的编程技巧,这些内容对编写高效程序很有帮助。

第4篇(第24~25章):本篇是综合案例,分别举出了数据结构、网络等编程实例。通过对这些实例的学习,让读者有实践项目的体会,以达到实战的能力。

适合的读者

* C++入门读者

* C++从业人员

* 大中专院校学生

* 社会培训学生

* 毕业设计的学生

* 程序设计爱好者

本书作者及编委会成员

本书由秦广军主笔编写。其他参与编写和资料整理的人员有陈世琼、陈欣、陈智敏、董加强、范礼、郭秋滟、郝红英、蒋春蕾、黎华、刘建准、刘霄、刘亚军、刘仲义、柳刚、罗永峰、马奎林、马味、欧阳昉、蒲军、齐凤莲、王海涛、魏来科、伍生全、谢平、徐学英、杨艳、岳富军、张健和张娜等。在此一并表示感谢!

本书编委会成员有欧振旭、陈杰、陈冠军、顼宇峰、姚志娟、张帆、陈刚、程彩红、毛红娟、聂庆亮、王志娟、武文娟、颜盟盟、尹继平、张昆、张薛。

编者

??

??

??

??

前    言

前    言

·IV·

·III·

目录

目    录

第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 major 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篇  高  级  篇

第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篇  应  用  篇

第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

??

??

??

??

目    录

目    录

·VIII·

·IX·

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个