描述
开 本: 128开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121209345
推荐购买:
《》
大师Stanley继《C Primer》后又一部经典著作,侯捷代表译作
将复杂深厚的内容浓缩成基本要素,快速熟悉和了解C 的上佳捷径
从实际出发,讲求效率,覆盖能够帮助解决实际编程问题的特性和技术
以过程、泛型、基于对象、面向对象四大风格组织,复杂度渐进,便于学习
本书以四个面向来表现C 的本质:procedural(面向过程的)、generic(泛型的)、object-based(基于对象的)、object-oriented(面向对象的)。全书围绕一系列逐渐繁复的程序问题,以及用以解决这些问题的语言特性来组织。循此方式,你将不只学到C 的功能和结构,也可学到它们的设计目的和基本原理。 本书适合那些已经开始从事软件设计,又抽不出太多时间学习新技术的程序员阅读。
满汉全席之外(译序/侯捷) v
前言Preface xi
结构与组织 xiii
关于源代码 xiii
致谢 xiv
更多读物 xiv
排版约定 xv
第1章 C 编程基础 Basic C Programming 1
1.1 如何撰写C 程序 1
1.2 对象的定义与初始化 7
1.3 撰写表达式 10
1.4 条件语句和循环语句 15
1.5 如何运用Array和Vector 22
1.6 指针带来弹性 26
1.7 文件的读写 30
第2章 面向过程的编程风格 Procedural Programming 35
2.1 如何编写函数 35
2.2 调用函数 41
2.3 提供默认参数值 50
2.4 使用局部静态对象 53
2.5 声明inline函数 55
2.6 提供重载函数 56
2.7 定义并使用模板函数 58
2.8 函数指针带来更大的弹性 60
2.9 设定头文件 63
第3章 泛型编程风格 Generic Programming 67
3.1 指针的算术运算 68
3.2 了解Iterator(泛型指针) 73
3.3 所有容器的共通操作 76
3.4 使用顺序性容器 77
3.5 使用泛型算法 81
3.6 如何设计一个泛型算法 83
3.7 使用Map 90
3.8 使用Set 91
3.9 如何使用Iterator Inserter 93
3.10 使用iostream Iterator 95
第4章 基于对象的编程风格 Object-Based Programming 99
4.1 如何实现一个Class 100
4.2 什么是构造函数和析构函数 104
4.3 何谓mutable(可变)和const(不变) 109
4.4 什么是this指针 113
4.5 静态类成员 115
4.6 打造一个Iterator Class 118
4.7 合作关系必须建立在友谊的基础上 123
4.8 实现一个copy assignment operator 125
4.9 实现一个function object 126
4.10 重载iostream运算符 128
4.11 指针,指向Class Member Function 130
第5章 面向对象编程风格 Object-Oriented Programming 135
5.1 面向对象编程概念 135
5.2 漫游:面向对象编程思维 138
5.3 不带继承的多态 142
5.4 定义一个抽象基类 145
5.5 定义一个派生类 148
5.6 运用继承体系 155
5.7 基类应该多么抽象 157
5.8 初始化、析构、复制 158
5.9 在派生类中定义一个虚函数 160
5.10 运行时的类型鉴定机制 164
第6章 以template进行编程 Programming with Templates 167
6.1 被参数化的类型 169
6.2 Class Template的定义 171
6.3 Template类型参数的处理 172
6.4 实现一个Class Template 174
6.5 一个以Function Template完成的Output运算符 180
6.6 常量表达式与默认参数值 181
6.7 以Template参数作为一种设计策略 185
6.8 Member Template Function 187
第7章 异常处理 Exception Handling 191
7.1 抛出异常 191
7.2 捕获异常 193
7.3 提炼异常 194
7.4 局部资源管理 198
7.5 标准异常 200
附录A 习题解答 Exercises Solutions 205
附录B 泛型算法参考手册 Generic Algorithms Handbook 255
附录C 中英术语对照 侯捷 271
英文术语的采用原则 271
中英术语对照(按字母顺序排列) 272
索引 Index 277
满汉全席之外(译序/侯捷)
Stanley B. Lippman所著的C Primer雄踞书坛历久不衰,堪称C 教科书。但是走过十个年头之后,继1237页的C Primer第3版,Lippman又返璞归真地写了这本276页的Essential C 。有了满汉全席,为何还眷顾清粥小菜?完成了伟大的巨著,何必回头再写这么一本轻薄短小的初学者用书呢?
所有知道Lippman和C Primer的人,脸上都浮现相同的问号。
轻薄短小并不是判断适合初学与否的依据。Lippman写过Inside the C Object Model,280页小开本,崩掉多少C 老手的牙。本书之所以号称适合初学者,不在于轻薄短小,在于素材选择与组织安排。
关于Lippman重作冯妇的故事,他自己在前言中有详细的介绍。他的转折,他的选择,他的职责,乃至于这本书的纲要和组织,前言中都有详细的交待。这方面我不必再置一词。
身为C Primer, 3rd Edition的译者,以及多本进阶书籍的作者,我必须努力说服自己,才能心甘情愿地将精力与时间用来重复过去的足迹。然而,如果连Lippman都愿意为初学者再铺一条红地毯,我也愿意为初学者停留一下我的脚步。
我是一名信息教育者,写译书籍,培训人员,在大学开课……。我真正线面对大量学习者。借此机会我要表达的是,所谓“初学者”实在是个过于笼统的名词与分类(呃,谈得上分类吗)。一般所谓“初学者”,多半想象是大一新生程度。其实C 语言存在各种“初学者”,有13岁的,有31岁的(当然也有41岁的)。只要是次接触这个语言,就是这个语言的初学者,他可能才初次接触计算器,可能浸淫Pascal/C语言十年之久,也可能已有Smalltalk/Java三年经验。有人连计算器基本概念都没有,有人已经是经验丰富的软件工程师。这些人面对C ,学习速度、教材需求、各人领悟,相同吗?
大不同矣!
每个人都以自己的方式来诠释“初学者”这个字眼,并不经意地反映出自己的足迹。初学者有很多很多种,“初学者”一词却无法反映他们的真实状态。
固然,轻薄短小的书籍乍见之下让所有读者心情轻松,但如果舍弃太多应该深入的地方不谈,也难免令人行止失据,进退两难。这本小书可以是你的起点,但绝不能够是你的终站。
作为一本优秀教科书,轻薄短小不是重点,素材选择与组织安排,表达的精准与阅读的顺畅,才是重点。
作为一个好的学习者,背景不是重点,重要的是,你是否具备正确的学习态度。起步固然可从轻松小品开始,但如果碰上大部头巨著就退避三舍逃之夭夭,面对任何技术只求快餐速成,学编程语言却从来不编写程序,那就没有成为高手乃至专家的一天。
有些人的学习,自练一身铜筋铁骨,可以在热带丛林中披荆斩棘,在莽莽草原中追奔逐北。有些人的学习,既未习惯大部头书,也未习惯严谨格调,更未习惯自修勤学,是温室里的一朵花,没有自立自强的本钱。
章节的安排,篇幅的份量,索引的保留,习题加解答,以及网上的服务,都使这本小书成为自修妙品、C 专业课程的适当教材。诚挚希望《Essential C 中文版》的完成,帮助更多人获得C 的学习乐趣——噢,是的,OOP(面向对象编程)可以带给你很多乐趣,我不骗你
侯捷 2012/09/22
敬请注意:
本书与英文版页页对译,从而得以保留原书索引。
本书附加“中英术语对照表”于附录C,并于其中说明中英术语的采用原则。
评论
还没有评论。