首页>参考读物>计算机科学与技术>软件与程序设计

24学时攻克C++(原书第4版)
作者 : Jesse Liberty, David B.Horvath, CCP
译者 : 马朝晖 等
出版日期 : 2005-09-19
ISBN : 7-111-16940-9
定价 : 38.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 349
开本 : 16开
原书名 : SAMS Teach Yourself C++ in 24 Hours (Fourth Edition)
原出版社: Sams
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

主要内容
● 使用C++快速构建面向对象程序
● 掌握C++的核心概念,如函数、类、数组和指针
● 使用链表和模板添加丰富的功能
● 调试程序以便获得完美无缺的代码
● 学习异常和错误处理技术
● 使代码符合ANSI以便重用
按照简明且循序渐进的阐述方式,读者可以从头开始领略C++的实质。

本书特点
■ 你知道吗? 指出捷径和解决方案的提示
■ 题外话 简明地阐述概念和过程的注释
■ 注意 帮助读者避免常见失误的警告
■ 问与答、测验和练习 在每章的最后,帮助读者加强对C++的理解

已经有超过250 000位读者跟随本书作者——JesseLiberty学习C++。

图书特色

图书前言

编写本书的目的是为了帮助读者学习如何使用C++进行程序设计。仅仅在24个学时的课程内, 你将学习管理I/O、 循环和数组、 面向对象编程、 模板以及创建C++应用程序等基础知识, 全部是结构良好并且易于理解的课程。这些课程提供范例代码清单——包括范例输出和代码分析——以便演示每一章的主题。本书清楚地标出了语法范例, 方便读者参考。
  为了帮助读者更加精通C++, 每一章最后都设计一组常见问题和解答。
  这一版本中全新的内容是“课外作业”部分, 它包括测验(带有测验答案)和练习。

谁应该阅读本书
  学习本书不需要任何编程经验。本书从基本内容开始讲解, 并且同时讲授语言以及C++编程涉及的概念。一旦读者开始阅读本书学习, 就会发现大量语法范例以及对代码的详细分析是优秀的向导。不管是从头学起, 还是已经具有了一些编程经验, 读者都会发现本书具有清晰的组织结构, 使C++的学习变得快速而且简单。

是否应该先学习C语言
  自然会有人提出这样的问题: 因为C++是C的扩充, 是否应该先学习C呢?Stroustrup(C++的发明者)和大多数其他C++程序员都同意:首先学习C不仅没必要, 而且是一个坏主意, 因为你可能会学到一些坏的习惯, 这些习惯是C++禁止使用的。本书假设读者不是C程序员。但是, 如果读者是C程序员, 也没有问题。阅读前几章来进行回顾, 然后继续下去。读者会发现C语言与C++有很大的不同。

为什么要学习C++
  这是另一个常见的问题, 通常人们接着会说: “毕竟,x语言是最新和最好的,它将替代C++”。回答很简单:“并不是这样!”。很多语言都试图替代COBOL, 但是仍旧有成千上万行的应用程序使用COBOL语言(而且有更多的代码正在开发出来)。目前有很多应用使用C++, 并且越来越多。 即使你认为C++未来的前景黯淡, 仍然需要学习它, 因为很多“新的并且改进的”语言都来源于C++。Java和C#共享C++的语法, 但是它们在很多方面是难于学习的。
  学习C++将帮助我们掌握类似的语言。不仅是Java和C#, 而且包括awk、 Perl,当然还有C。最重要的因素之一是学到了可以用在别处的技巧, 并且可以在当前任何平台上使用这些技巧: 从PC到大型的Unix系统, 再到数据中心大型机。现有代码可能不是真正可移植的(能够改换平台且无需改动), 而你现在学习的技巧正是可移植的!

本书使用的惯例
  下面介绍本书包含的特殊内容:
  这些图标突出能使C++编程更加有效和高效的信息。    
  注意:这些图标使你的注意力集中在特殊情况之下可能发生的问题和副作用上。
  这些图标是关于当前主题的提示和附加信息。
  要:该章中基本原则的简单总结。
  不要: 不要忽略这些文字框中提供的有用的信息。

  输出
  下面的内容将显示代码清单/范例的输出。
  分析
  下面的内容是对读者刚刚阅读的代码范例的分析。

本书使用不同的字体:
  ▲ 为了帮助读者区分C++代码和其他常规内容, 实际的C++代码使用特别的代码体排版。
  占位符——临时使用的词或者字符, 代表将在代码中输入的实际词或者字符——使用斜体字体排版。
  ▲ 新的或者重要的术语使用楷体字。
  ▲ 本书的清单中, 对每个实际的代码行都进行了编号。如果看到清单中没有编号的行, 就知道那实际上是前一编号的代码行的继续(相对于书籍的宽度, 一些代码行过长)。这种情况下, 应该把两行作为一行输入; 不要分开它们。

附带光盘的内容
附带光盘包括:
  ▲ 本书使用的全部清单范例。
  ▲ 来自Borland的免费编译器及其IDE: C++BuilderX。
  全部代码范例都使用这个编译器测试过, 本书不讲解编译器。我们可以在任何健壮的C++编译器上使用本书包含的范例。需要注意的是: 并不是所有的编译器都是健壮的, 或者都符合最新的标准, 所以它们可能不能够编译某些范例。因为现有很多不同的编译器(以及不同的版本), 所以在这里我们不可能一一列出它们的区别。
  ▲ 在每一章的最后提供的很多练习的解决方案。

  参与本书翻译工作的有: 马朝晖、 陈美红、 楼涵、 何运刚、 郑纪革、 李晓东、 裔彩霞、 张志刚、 迟旭 。

作者简介
  Jesse Liberty曾写过最为畅销的关于C++和NET的书籍。他是Liberty Associates公司(http://wwwLibertyAssociatescom)的总裁, 该公司提供定制的编程、 咨询和培训服务。
  David B Horvath, CCP是宾夕法尼亚州费城地区的高级顾问。他在这一领域工作超过15年, 并且是本地和远程教育大学讲授C++、 Unix/Linux和数据库技术的兼职教授。他于1998年从宾夕法尼亚大学获得组织动力学硕士学位。在国际范围内, 他为专业学会和公司提供技术讲座和专题讨论会。David是《UNIX for the Mainframer》(PrenticeHall/PTR)一书的作者、 《Sams Teach Yourself C++ for Linux in 21 Days》一书的合著者(与Jesse Liberty合著), 他对《Unix Unleashed》(多个版本)、 《Red Hat Linux Unleashed》(多个版本)、 《Learn Shell Programming in 24 Hours》、 《Linux Unleashed Fourth Edition》、 《Linux Programming Unleashed Second Edition》等书籍的编写做出了贡献, 他还撰写了大量的杂志文章, 同时是专业学会中活跃的志愿者。David的电子邮件地址是cppin24@cobscom。请不要发送垃圾邮件!

致谢
  我们要在这里对所有对本书出版有帮助的人表示感谢。 没有他们的支持和帮助, 这本书简直是无法完成的。首先, 要感谢Stacey、 Robin和Rachel Liberty。
  我还要感谢Sams、 Que、 O’Reilly以及Wrox公司中和这本书有关的每个人, 感谢他们最高质量的专业工作。Sams公司的编辑完成了了不起的工作, 并且我必须特别感谢Carol Ackerman、 Christy Franklin和Paul Strickland。特别感谢Rich Halpert。最后, 我希望感谢Kalish夫人, 她在1965年教授六年级的我如何进行二进制运算, 那时候不管是她还是我都不知道为什么。

——Jesse Liberty

 除了Jesse感谢的人之外, 我很抱歉在这里无法一一提及Sams公司的很多员工。在这个项目上, 我跟Songlin Qiu和Loretta Yates进行了合作。
 当然, 没有我的家人——特别是我妻子Mary——的支持和理解, 这本书是不可能面世的。我的家庭默默忍受了书籍项目给他们带来的痛苦, 因为实际上我只有在晚上和周末才有时间写这本书。

——David B Horvath


我们希望收到读者的反馈
  作为本书的读者, 您是我们最重要的批评者和评论者。我们很重视您的意见并且希望了解我们做对了什么、 我们能够改进什么、 您希望我们出版什么领域的书籍, 以及希望传递给我们的任何意见。
  作为Sams出版公司的合作出版者, 我欢迎您的评论。可以发送电子邮件或者直接写信给我, 使我了解您喜欢或者不喜欢本书的什么内容——还有为出版更好的书籍我们能够做出哪些努力。
  请注意我不能帮助您解决和本书主题相关的技术问题。但是, 我会把和本书相关的专门的技术问题转给用户服务团队。
  当您写信的时候, 请确保包括了本书的名称和作者, 还有您的姓名、 电子邮件地址和电话号码。我会仔细地阅读您的评论并且和参与本书的作者和编者分享它们。
电子邮件: feedback@samspublishingcom
邮件: Michael Stephens
Associate Publisher
Sams Publishing
800 East 96th Street
Indianapolis, IN 46240 USA

  关于本书或者Sams出版公司的其他书籍的更多信息, 请访问我们的Web站点: wwwsamspublishingcom。在搜索区域输入书籍的ISBN号码(0672326817)或者书名查找您要搜索的页面。

作者简介

Jesse Liberty, David B.Horvath, CCP:Jesse Liberty: Jesse Liberty著有大量有关软件开发的书籍,包括最为畅销的关于C++和.NET的书籍。他是Liberty Associates公司(http://www.LibertyAssociates.com)的总裁,该公司提供定制的程序设计、咨询和培训服务。
David B.Horvath, CCP: 是宾夕法尼亚州费城地区的高级顾问。他是《UNIX for the Mainframer》一书的作者、《Sams Teach Yourself C++ for Linux in 21 Days》一书的合著者(与Jesse Liberty合著),他对《Unix Unleashed》、《Red Hat Linux Unleashed》、《Learn Shell Programming in 24 Hours》、《Linux Unleashed》和《Linux Programming Unleashed》等书籍的编著做出了贡献,还撰写了大量的杂志文章。他还是专业社团中活跃的志愿者。

译者简介

马朝晖 等:暂无简介

图书目录

第一部分 C++概述
第1学时 开始
 11 准备编程
 12 澄清对C++、 ANSI C++、 ISO C++和Windows的一些观点
 13 安装和设置编译器
  131 从光盘进行安装
  132 配置Borland C++BuilderX编译器
  133 使用Borland C++BuilderX编译器进行编译
  134 编译器和编辑器
 14 编译和连接源代码
  141 在集成开发环境中进行编译
  142 连接程序
 15 开发周期
 16 HELLOCPP——第一个C++程序
 17 编译错误
 18 问与答
 19 课外作业
  191 测验
  192 练习
  193 测验答案

第2学时 C++程序的组成
 21 为什么C++是正确的选择
  211 过程化、 结构化和面向对象程序设计
  212 C++和面向对象程序设计
 22 简单程序的组成
  221 逐字符地查看#include
  222 逐行分析
 23 注释
  231 注释的类型
  232 在简单的范例程序中使用注释
 24 函数
  241 调用函数
  242 使用函数
  243 使用带有参数的函数
 25 问与答
 26 课外作业
  261 测验
  262 练习
  263 测验答案

第3学时 变量和常量
 31 变量是什么
  311 设置内存
  312 整数的长度
  313 带符号和无符号
  314 基本变量类型
 32 定义变量
  321 区分大小写
  322 关键字
 33 一次创建多个变量
 34 为变量赋值
 35 typedef
 36 何时使用短型, 何时使用长型
  361 无符号整数的回绕
  362 带符号整数的回绕
 37 常量
  371 文字常量
  372 符号常量
 38 枚举常量
 39 问与答
 310 课外作业
  3101 测验
  3102 练习
  3103 测验答案

第4学时 表达式和语句
 41 语句
  411 空白字符
  412 复合语句
 42 表达式
 43 操作符
  431 赋值操作符
  432 数学操作符
  433 组合赋值和数学操作符
  434 自增和自减操作符
  435 放在前缀和后缀位置的操作符
  436 优先级: 操作符的顺序
 44 复杂表达式的嵌套括号
 45 if语句
  451 else子句
  452 高级if语句
  453 在嵌套的if语句中使用花括号
 46 关于逻辑操作符的更多讲解
  461 逻辑与
  462 逻辑或
  463 逻辑非
  464 关系优先级
 47 关于真和假的更多讲解
 48 问与答
 49 课外作业
  491 测验
  492 练习
  493 测验答案

第5学时 函数
 51 函数是什么
 52 声明和定义函数
  521 声明函数
  522 定义函数
  523 函数定义的说明
 53 在函数内使用变量
  531 局部变量
  532 全局变量
 54 函数参数
  541 以函数调用作为参数
  542 参数也是局部变量
 55 从函数返回值
 56 函数中的默认参数
 57 重载函数
  571 内联函数
  572 堆栈和函数
 58 问与答
 59 课外作业
  591 测验
  592 练习
  593 测验答案

第6学时 程序流
 61 循环
  611 循环的根源goto
  612 为什么不使用goto
 62 while循环
  621 更复杂的while语句
  622 continue和break
  623 while(1)循环
 63 dowhile循环
 64 for循环
  641 初始化、 测试和自增
  642 高级for循环
  643 空for循环
  644 嵌套的循环
 65 switch语句
 66 问与答
 67 课外作业
  671 测验
  672 练习
  673 测验答案

第二部分 类
第7学时 基本的类
 71 类型是什么
 72 创建新的类型
 73 类和成员
  731 声明类
  732 类的命名惯例
  733 定义对象
  734 类和对象
 74 访问类成员
 75 私有访问和公共访问
 76 实现类方法
 77 构造器和析构器, 即创建和删除对象
  771 默认构造器
  772 编译器提供的构造器
 78 问与答
 79 课外作业
  791 测验
  792 练习
  793 测验答案

第8学时 关于类的更多讲解
 81 const成员函数
 82 接口和实现
 83 把类声明和方法定义放在哪里
 84 内联实现
 85 使用其他类作为成员数据的类
 86 问与答
 87 课外作业
  871 测验
  872 练习
  873 测验答案

第三部分 内 存 管 理
第9学时 指针
 91 了解指针及其用途
  911 在指针内存储地址
  912 指针名称
  913 间接操作符, 即间接使用指针
  914 指针、 地址和变量
  915 使用指针操作数据
  916 检查指针内存储的地址
 92 为什么要使用指针
 93 堆栈和堆
  931 使用new关键字
  932 使用delete关键字
  933 避免内存泄漏
 94 问与答
 95 课外作业
  951 测验
  952 练习
  953 测验答案

第10学时 高级指针
 101 在堆中创建对象
 102 删除对象
 103 使用指针访问数据成员
 104 堆中的成员数据
 105 this指针
 106 迷失或者悬挂指针
 107 const指针
  1071 const指针和const成员函数
  1072 const this指针
 108 问与答
 109 课外作业
  1091 测验
  1092 练习
  1093 测验答案

第11学时 引用
 111 什么是引用
 112 创建引用
 113 对引用使用取地址操作符
 114 什么能够引用
 115 空指针和空引用
 116 按引用传递函数参数
  1161 使用指针实现swap()
  1162 使用引用实现swap()
 117 理解函数头和原型
 118 返回多个值
 119 问与答
 1110 课外作业
  11101 测验
  11102 练习
  11103 测验答案

第12学时 高级引用和指针
 121 按引用进行传递以提高效率
 122 传递const指针
 123 引用作为指针的另一种方式
 124 何时使用引用和指针
 125 不要返回不在范围内的对象的引用
 126 返回堆中的对象的引用
 127 谁拥有指针
 128 问与答
 129 课外作业
  1291 测验
  1292 练习
  1293 测验答案

第四部分 强大的工具
第13学时 高级函数
 131 重载的成员函数
 132 使用默认值
 133 在默认值和重载的函数之间进行选择
 134 重载构造器
 135 初始化对象
 136 拷贝构造器
 137 问与答
 138 课外作业
  1381 测验
  1382 练习
  1383 测验答案

第14学时 操作符重载
 141 如何重载操作符
  1411 编写自增函数
  1412 重载后缀操作符
  1413 前缀和后缀之间的区别
  1414 operator+
  1415 重载operator+
  1416 操作符重载的局限性
  1417 何时需要重载
  1418 operator=
 142 转换操作符
 143 问与答
 144 课外作业
  1441 测验
  1442 练习
  1443 测验答案

第15学时 数组
 151 数组是什么
 152 数组元素
 153 写入超出数组的结尾
 154 栅栏错误
 155 初始化数组
 156 对象数组
 157 多维数组
 158 关于内存的讲解
 159 指针数组
 1510 在堆中声明数组
 1511 指向数组的指针和指针数组
 1512 指针和数组名称
 1513 在堆中删除数组
 1514 char数组
 1515 strcpy()和strncpy()
 1516 字符串类
 1517 问与答
 1518 课外作业
  15181 测验
  15182 练习
  15183 测验答案

第五部分 继承和多态性
第16学时 继承
 161 继承是什么
  1611 继承和派生
  1612 使用动物王国解释继承
  1613 派生的语法
 162 私有的和保护的
 163 构造器和析构器
 164 把参数传递给基类构造器
 165 覆盖函数
  1651 重载和覆盖
  1652 隐藏基类方法
  1653 调用基类方法
 166 问与答
 167 课外作业
  1671 测验
  1672 练习
  1673 测验答案

第17学时 多态性和派生类
 171 使用虚方法实现多态性
  1711 虚成员函数如何工作
  1712 不能用父类指针调用子类的方法
  1713 限制
  1714 虚析构器
  1715 虚拷贝构造器
  1716 虚方法的代价
 172 问与答
 173 课外作业
  1731 测验
  1732 练习
  1733 测验答案

第18学时 高级多态性
 181 单一继承的问题
 182 抽象数据类型
  1821 纯虚函数
  1822 实现纯虚函数
  1823 抽象的复杂层次结构
  1824 什么类型是抽象的
 183 问与答
 184 课外作业
  1841 测验
  1842 练习
  1843 测验答案

第19学时 链表
 191 链表和其他结构
 192 使用链表的实例研究
  1921 责任的委托
  1922 组件组成
 193 关于链表
 194 问与答
 195 课外作业
  1951 测验
  1952 练习
  1953 测验答案

第六部分 特 殊 主 题
第20学时 特殊的类、 函数和指针
 201 静态成员数据
 202 静态成员函数
 203 类的包含
  2031 访问被包含类的成员
  2032 过滤对被包含成员的访问
  2033 包含的代价
  2034 按值拷贝和按引用拷贝
 204 友元类
 205 友元函数
 206 指向函数的指针
  2061 简写调用
  2062 指向函数的指针数组
  2063 把指向函数的指针传递给其他函数
  2064 对指向函数的指针使用typedef
  2065 指向成员函数的指针
  2066 指向成员函数的指针数组
 207 问与答
 208 课外作业
  2081 测验
  2082 练习
  2083 测验答案

第21学时 预处理器
 211 预处理器和编译器
 212 查看中间形式
 213 使用#define指令
  2131 对常量使用#define
  2132 使用#define和#ifdef进行测试
  2133 #else预处理器命令
 214 包含和包含防护
  2141 在命令行上进行定义
  2142 反定义
  2143 条件编译
 215 宏函数
  2151 为什么总需要括号
  2152 宏与函数和模板
 216 字符串操作
  2161 字符串化操作符
  2162 串联操作符
 217 预定义宏
 218 问与答
 219 课外作业
  2191 测验
  2192 练习
  2193 测验答案

第22学时 面向对象分析和设计
 221 开发周期
 222 模拟一个警报系统
  2221 概念化
  2222 分析和需求
  2223 高层和底层设计
  2224 其他对象
  2225 类是什么
  2226 如何报告警报
  2227 事件循环
 223 PostMaster:案例研究
  2231 两次衡量, 一次分隔
  2232 分治
  2233 消息格式
  2234 初始类设计
  2235 有根的层次结构和无根的层次结构
  2236 设计接口
  2237 构建原型
  2238 80/80原则
  2239 设计PostMasterMessage类
  22310 应用程序编程接口
  22311 大型团队中的编程
  22312 开发中的设计考虑
  22313 使用驱动程序
 224 问与答
 225 课外作业
  2251 测验
  2252 练习
  2253 测验答案

第23学时 模板
 231 模板是什么
 232 模板实例
 233 模板定义
 234 使用模板项
 235 标准模板库
 236 问与答
 237 课外作业
  2371 测验
  2372 练习
  2373 测验答案

第24学时 异常、 错误处理及其他
 241 缺陷、 错误、 事故和代码失败
 242 处理没想到的情况
 243 异常
 244 使用try和catch块
  2441 捕获异常
  2442 多个catch规范
  2443 按引用捕获和多态性
 245 编写专业品质的代码
  2451 花括号
  2452 长行
  2453 switch语句
  2454 程序文本
  2455 标识符名称
  2456 名称的拼写和大写字母开头
  2457 注释
  2458 访问
  2459 类定义
  24510 include文件
  24511 assert()
  24512 const
 246 其他资源
  2461 在哪里获得帮助和建议
  2462 推荐书籍
 247 问与答
 248 课外作业
  2481 测验
  2482 练习
  2483 测验答案

第七部分 附  录
附录A 二进制和十六进制
附录B 术语表

教学资源推荐
作者: [美] 凯·霍斯特曼(Cay Horstmann) 兰斯·尼塞斯(Rance Necaise) 著
参考读物推荐
作者: (美)Matthew A. Russell 著
作者: [美]罗伯特 C.西科德(Robert C. Seacord)著