具体描述
每一个渴望学习C++语言的初学者都希望能够有一本全面的,实用的,同时又是生动有趣的入门书。这本入门书可以告诉这些初学者,整个C++世界有哪些内容构成,应该按照怎样的路径进行学习探索,用C++进行程序设计应该具有怎样的设计思想,同时,又如何在实践中运用这些学到的知识。可以说,这本书基本上囊括了每个C++初学者都应该了解的所有知识,从C++的基础知识到面向对象思想,从设计模式到STL标准模板库,从Windows系统下的开发到Linux/嵌入式系统下的开发,再到最后的项目管理知识。当一位C++初学者完成本书的学习后,他基本上浏览了C++的整个世界,可以独立地以C++进行应用开发了。
作者简介
陈良乔 程序员、自由撰稿人,毕业于西安交通大学。敏而好学,乐于分享,连续六年获得微软MVP称号。因撰写一系列Visual Studio 2010技术文章和Windows 7开发技术文章,2010年又获“MSDN原创之星”称号。参与微软中国Visual C++深度体验圆桌会议,终获得Visual Studio贡献水晶奖杯。平素喜好新鲜事物,但绝非新潮技术的追捧者,至今还陷在设计模式、面向对象方法之中,不能自拔。好舞文弄墨,传播心得,著有博客:http://imcc.blogbus.com。
目录信息
第1篇 叩开C++世界的大门 1
第1章 C++世界地图 3
1.1 C++是什么 3
1.2 C++的前世今生 3
1.2.1 从B到C 4
1.2.2 从C到C++ 4
1.2.3 从C++到.NET Framework的CLI 6
1.2.4 最新标准C++0x让C++重新焕发活力 8
1.2.5 C++和C#不得不说的那点事儿 8
1.2.6 C++世界的五大子语言 9
1.3 C++世界版图 10
1.3.1 Windows系统下的C++开发 10
1.3.2 Linux系统下的C++开发 11
1.3.3 嵌入式系统下的C++开发 11
1.4 如何学好C++ 12
1.4.1 将自然语言转换为C++程序设计语言 12
1.4.2 “多读多写”是学好C++的不二法门 14
1.4.3 和Google做朋友 14
第2章 与C++第一次亲密接触 17
2.1 一个C++程序的自白 17
2.1.1 用Visual Studio创建C++程序 17
2.1.2 以手工方式创建C++程序 20
2.1.3 C++程序=预编译指令+程序代码+注释 21
2.1.4 编译器和链接器 25
2.1.5 C++程序的执行过程 26
2.1.6 程序的两大任务:描述数据与处理数据 27
2.2 基本输入/输出流 28
2.2.1 标准的输入和输出对象 29
2.2.2 输出格式控制 31
2.2.3 读/写文件 32
2.3 最常用的开发环境Visual Studio 34
2.3.1 Visual C++的常用菜单 35
2.3.2 Visual C++的常用视图 44
2.4 C++世界旅行必备的物品 46
2.4.1 编程助手Visual Assist 46
2.4.2 代码配置管理工具Visual Source Safe 48
2.4.3 CodeProject和CodeGuru 48
2.4.4 C++百科全书MSDN 48
第2篇 欢迎来到C++世界 51
第3章 C++世界众生相 53
3.1 C++中的数据类型 53
3.2 变量和常量 54
3.2.1 声明变量 55
3.2.2 给变量取个好名字 55
3.2.3 变量初始化 57
3.2.4 常量 57
3.2.5 用宏与const关键字定义常量 59
3.3 数值类型 62
3.3.1 整型数值类型 62
3.3.2 浮点型数值类型 63
3.4 布尔类型 64
3.5 字符串类型 65
3.5.1 字符类型 65
3.5.2 字符串类型 66
3.6 数组 67
3.6.1 数组的声明与初始化 68
3.6.2 数组的使用 69
3.7 枚举类型 71
3.8 用结构体类型描述复杂的事物 73
3.8.1 结构体的定义 73
3.8.2 结构体的使用 74
3.9 指向内存位置的指针 76
3.9.1 指针就是表示内存地址的数据类型 76
3.9.2 指针变量的定义 77
3.9.3 指针的赋值和使用 78
第4章 将语句编织成程序 81
4.1 用运算符对数据进行运算 81
4.1.1 用表达式表达设计意图 82
4.1.2 算术运算符 82
4.1.3 赋值操作符 84
4.1.4 关系运算符 84
4.1.5 逻辑运算符 86
4.1.6 运算符之间的优先顺序 87
4.1.7 将表达式组织成语句 89
4.2 条件选择语句 90
4.2.1 if语句 90
4.2.2 并列选择的switch语句 93
4.3 循环控制语句 97
4.3.1 while循环 97
4.3.2 do…while循环 99
4.3.3 for循环 100
4.3.4 循环控制:break和continue 102
4.4 从语句到程序 104
4.4.1 程序是控制语句串联起来的语句 104
4.4.2 豪华工资统计程序 106
第5章 用函数封装程序功能 109
5.1 函数就是一个大“箱子” 109
5.1.1 函数的声明和定义 110
5.1.2 函数调用机制 113
5.1.3 函数的声明与函数调用 117
5.1.4 函数参数的传递 119
5.1.5 函数的返回值 121
5.2 内联函数 123
5.2.1 用体积换速度的内联函数 123
5.2.2 内联函数的使用规则 124
5.3 重载函数 125
5.3.1 重载函数的声明 125
5.3.2 重载函数的解析 128
5.4 函数设计的基本规则 129
5.4.1 函数声明的设计规则 129
5.4.2 函数体的设计规则 131
第6章 当C++爱上面向对象 135
6.1 从结构化设计到面向对象程序设计 135
6.1.1 “自顶向下,逐步求精”的结构化程序设计 136
6.1.2 面向对象程序设计 137
6.1.3 面向对象的三座基石:封装、继承与多态 138
6.2 类:当C++爱上面向对象 142
6.2.1 类的声明和定义 142
6.2.2 使用类创建对象 146
6.2.3 构造函数和析构函数 148
6.2.4 拷贝构造函数 152
6.2.5 操作符重载 155
6.2.6 类成员的访问控制 157
6.2.7 在友元中访问类的隐藏信息 160
6.3 类如何面向对象 162
6.3.1 用类机制实现封装 163
6.3.2 用基类和派生类实现继承 164
6.3.3 用虚函数实现多态 171
6.4 实战面向对象:工资管理系统 175
6.4.1 从问题描述中发现对象 175
6.4.2 分析对象的属性和行为 176
6.4.3 实现类的属性和行为 177
6.5 高手是这样炼成的 183
6.5.1 C++类对象的内存模型 183
6.5.2 指向自身的this指针 185
第7章 C++世界的奇人异事 189
7.1 一切指针都是纸老虎:彻底理解指针 189
7.1.1 指针的运算 189
7.1.2 灵活的void类型和void类型指针 192
7.1.3 指向指针的指针 194
7.1.4 指针在函数中的应用 195
7.1.5 引用 198
7.2 程序中的异常处理 203
7.2.1 异常处理 203
7.2.2 异常的函数接口声明 206
7.2.3 合理使用异常处理 207
7.3 编写更复杂的C++程序 208
7.3.1 源文件和头文件 208
7.3.2 名字空间 210
7.3.3 作用域与可见性 214
7.3.4 编译预处理 218
7.4 高手是这样炼成的 220
7.4.1 用宏定义化繁为简 220
7.4.2 用typedef定义类型的别名 221
7.4.3 用const保护数据 223
第3篇 攀登C++世界的高峰 227
第8章 用STL优雅你的程序 229
8.1 跟STL做朋友 230
8.1.1 算法 + 容器 + 迭代器 = STL 230
8.1.2 在程序中使用STL 231
8.1.3 STL到底好在哪里 233
8.2 用模板实现通用算法 234
8.2.1 函数模板 235
8.2.2 类模板 238
8.2.3 模板的实例化 240
8.2.4 用模板实现通用算法 241
第9章 STL中的容器管理数据 245
9.1 容器就是STL中的瓶瓶罐罐 245
9.1.1 操作容器中的数据元素 247
9.1.2 使用迭代器访问容器中的数据元素 247
9.1.3 容器的使用说明书 249
9.1.4 如何选择合适的容器 252
9.2 vector容器是数组的最佳替代者 253
9.2.1 创建并初始化vector对象 253
9.2.2 vector容器的操作 256
9.2.3 访问vector容器中的数据 257
9.3 可以保存键值对的map容器 258
9.3.1 创建并初始化map容器 258
9.3.2 将数据保存到map容器中 259
9.3.3 根据键找到对应的值 260
第10章 用STL中的通用算法处理数据 263
10.1 STL算法中的“四大帮派” 263
10.2 容器元素的查找与遍历 264
10.2.1 用for_each()算法遍历容器中的数据元素 264
10.2.2 用find()和find_if()算法实现线性查找 266
10.3 容器元素的复制与变换 270
10.3.1 复制容器元素:copy()算法 270
10.3.2 合并容器元素:merge()算法 272
10.3.3 变换容器元素:transform函数 274
10.4 容器元素的排序 276
10.4.1 使用sort()算法对容器中的数据进行排序 276
10.4.2 对排序的规则进行自定义 279
10.5 实战STL算法 282
10.5.1 “算法”老师带来的一堂别开生面的体育课 282
10.5.2 删除容器中的冗余元素 284
第11章 函数指针、函数对象与Lambda表达式 287
11.1 函数指针 287
11.1.1 函数指针的声明与赋值 287
11.1.2 用函数指针调用函数 289
11.1.3 用函数指针实现回调函数 291
11.1.4 将函数指针应用到STL算法中 293
11.2 函数对象 295
11.2.1 定义一个函数对象 295
11.2.2 利用函数对象记住状态数据 297
11.3 用Lambda表达式编写更简单的函数 299
11.3.1 最简单直接的函数表达形式:Lambda表达式 299
11.3.2 Lambda表达式的语法规则 301
11.3.3 Lambda表达式的复用 302
第12章 C++世界的几件新鲜事 305
12.1 用右值引用榨干C++的性能 305
12.1.1 什么是右值 305
12.1.2 右值引用在函数返回值上的应用 306
12.1.3 STL算法中被浪费的右值 307
12.1.4 右值引用如何提高性能 310
12.2 智能指针shared_ptr 312
12.2.1 C++的内存管理 312
12.2.2 用聪明的shared_ptr解决内存管理问题 313
12.2.3 智能指针的应用场景 315
12.2.4 shared_ptr的使用 316
12.2.5 shared_ptr与标准库容器 321
12.2.6 对shared_ptr进行自定义 323
12.3 用PPL进行多线程开发 326
12.3.1 多核给程序设计带来的挑战 326
12.3.2 PPL带来免费的午餐 327
12.3.3 PPL中的并行算法 329
12.3.4 PPL中的并行任务 331
12.3.5 PPL中的并行对象和并行容器 334
12.3.6 PPL之外的另一种选择:OpenMP 340
第13章 找工作就靠它了 343
13.1 打好基础 343
13.1.1 基本概念 343
13.1.2 函数 346
13.1.3 面向对象思想 348
13.1.4 类与对象 349
13.1.5 STL 360
13.2 积累经验 362
13.3 考查智力 364
附录A 接下来该读什么书 367
A.1 开山鼻祖:《C++程序设计语言》 367
A.2 初学者必看:《C++ Primer中文版(第4版)》 368
A.3 百科全书:《代码大全,第2版》 368
A.4 内功秘籍:《Effective C++(Third Edition)》 370
A.5 经验很重要:《C++编程规范》 370
后记 373
· · · · · · (收起)
读后感
我是初学者,这本书不同我以往参阅的其他书籍。 1、看起来很轻松,说说笑笑的同时学到大量的知识。 2、从最简单的一个小程序入手,让我这种菜鸟也很容易看明白。再通过这个简单的小程序,深入地讲解了c++程序的组成部分,执行过程等等,让我理清了c++编程的思路,好像一下找...
把CU的评论一起转过来吧,别误导读者了,至少在你的下一版之前先别卖了。 首先,你介绍的是微软的IDE,不是C++。初学者是没有什么分辨能力的,但是你来忽悠他们就是你的不对了。 其次,里面大量的硬伤就不提了,CU上有很多人在吐槽,介绍一门语言,至少要按照这门语...
尚未看完,推荐这本书的理由: 1,"态度决定一切",良乔在此书上投入的心血。 2,"宁顺勿信",不同于一般it图书的晦涩文字,"顺"使此书的阅读成为享受。 附:作者答疑专用贴: http://imcc.blogbus.com/logs/130314349.html ==== 我已经读完了,新的几条推荐理由: 1,注重...
由于以前学过c++ ,对于语法基本都了解了,前面6章走马观花的看的,一般般的了,在学校学过c++ 的基本都可以忽略过去的,主要还是书中的STL 优雅的程序,这个才是c++的精髓啊!STL 讲的还是通俗易懂的!很简单很实用!
首先,我是一个纯.net程序员(3年)。对C++是不了解,却很向往。加上最近开始做ios开发,就决定接触一下C/C++的世界。大学的时候学习过C++,它非常枯燥,很难理解。所以在我的印象中,C++是一门非常难于掌握的语言。它既面向过程,又面向对象,跟java、C#不同,它支持多继...
用户评价
坦白说,在遇到《我的第一本C++书》之前,我对C++的印象一直停留在“高深莫测”的阶段。尝试过几本其他的入门书籍,但总是因为各种原因半途而废。这本书真的给我带来了非常大的惊喜。它完全颠覆了我对C++学习的刻板印象。作者的讲解方式非常新颖,仿佛真的在和我进行一场平等的交流,而不是居高临下地“教导”。书中的每一个概念都循序渐进,不会让我感到压力。我特别欣赏书中对于复杂概念的拆解和比喻,那些曾经让我头疼的内存管理、数据结构等等,现在都变得清晰明了。而且,这本书不仅仅是讲解语法,更注重培养我的编程思维。它会引导我去思考代码背后的逻辑,以及如何写出更优雅、更高效的代码。我感觉自己在这本书里学到的不仅仅是 C++ 的知识,更是一种解决问题的能力和一种全新的思考方式。现在,我对 C++ 的学习充满了期待,迫不及待地想去接触更深入的内容。
作为一名对编程充满热情但缺乏系统指导的自学者,《我的第一本C++书》对我来说,无疑是一盏指路明灯。它不仅仅是一本书,更像是一个循循善诱的老师,耐心地解答我心中所有关于C++的疑问。书中的语言风格非常朴实,没有华丽的辞藻,但每一个字都饱含着作者对编程的热爱和对读者的关怀。我尤其喜欢书中那种“举一反三”的教学模式。在讲解完一个基础概念后,作者总会给出一些变体或者进阶的应用场景,让我思考如何将所学知识灵活运用。这极大地培养了我的独立思考能力和解决问题的能力。不像一些书籍那样,看完之后感觉自己好像懂了,但一到实际操作就寸步难行,这本书让我感觉自己真的学到了东西,并且能够立刻应用起来。现在,我甚至可以尝试着自己去构思一些小项目,而不再是那种只知道模仿代码的“复制代码党”。这本书为我打开了一个全新的编程世界,让我看到了无限的可能性。
这本书简直是我在编程世界里第一次真正意义上的“启蒙”!我一直对计算机科学充满好奇,也知道C++是一门非常强大且基础的语言,但总是被那些复杂的概念和陌生的术语吓得望而却步。直到我遇到了《我的第一本C++书》,一切都改变了。作者用一种极其平易近人的方式,将C++的迷宫般的知识点一一解开,仿佛是在和我这位编程新手进行一场耐心而有趣的对话。我最喜欢的一点是,书中的例子都非常贴合实际,不是那种脱离实际的理论堆砌。比如,学习到指针的时候,书中会用一个很形象的比喻来解释它,让我一下子就抓住了核心。而且,每一章的结尾都会有一些小练习,让我有机会立刻巩固所学,而不是看完就忘。这本书没有给我带来任何压迫感,反而让我越来越享受学习的过程,就像是在玩一个解谜游戏,每解决一个问题,都会获得巨大的成就感。它让我觉得,编程并没有想象中那么遥不可及,只要方法得当,每个人都能踏上这条充满创造力的道路。
我必须承认,在翻开这本《我的第一本C++书》之前,我对C++的印象就是“难”和“枯燥”。之前尝试过几本其他入门书籍,但要么是上来就讲一堆我听不懂的概念,要么就是例子过于简单,根本无法体会到C++的精妙之处。这本书完全打破了我的固有认知。它就像一位经验丰富的向导,带着我一步步深入C++的腹地,但每一步都走得如此稳健,让我能清晰地看到前方的风景。书中的讲解逻辑非常清晰,层层递进,不会一下子抛出太多信息。我特别赞赏作者在解释抽象概念时所采用的类比和图示,那些看似复杂的语法和原理,在我看来都变得生动起来。让我印象深刻的是,在讲解面向对象编程的时候,书中并没有直接跳到类和对象的定义,而是先从现实世界中的事物入手,引导我去思考如何将它们抽象成代码。这种循序渐进、润物细无声的教学方式,让我真正理解了编程思想,而不仅仅是死记硬背语法。现在,我已经不再害怕C++了,反而觉得它充满了魅力,迫不及待地想去探索更多。
一直以来,编程对我来说就像一个充满迷雾的国度,而《我的第一本C++书》就像那把钥匙,为我打开了通往这个国度的大门。我曾经因为C++的门槛而感到沮丧,觉得它离我太遥远。但这本书的出现,彻底改变了我的看法。作者在书中巧妙地将那些看似难以理解的 C++ 概念,用一种非常直观、易懂的方式呈现出来。我最喜欢的地方在于,书中并没有一味地灌输知识,而是注重引导读者去思考,去探索。例如,在讲解函数重载的时候,它会先让我思考为什么需要有这样的机制,而不是直接告诉我定义。这种“知其然,更知其所以然”的学习方式,让我对 C++ 的理解更加深刻。而且,书中的每一个案例都经过精心设计,能够有效地帮助我巩固所学,并激发我对 C++ 进一步学习的兴趣。现在,我对 C++ 的学习充满了信心,感觉自己已经不再是那个对编程一无所知的门外汉了,而是真正迈入了 C++ 的殿堂。
很普通 没多少帮助 叙述有点牵连不清
这本书认为.Net Framework是C++的发展方向;认为变量应该按照“匈牙利命名法”取名;说int占16个字节,范围是-32768..32767;认为在for循环里++i比i++高效。
基本没有独到的东西,也缺乏对C++的深刻认识,只有一些花里胡哨且比喻不当的辞藻
推荐给同学的,顺便自己翻了下。比Essential C++更适合入门,而且还穿插了不少新标准的内容以及编码的规范。不过文中居然推荐匈牙利命名法......这是一个极大的败笔啊。另外,此书貌似太注重IDE了,尤其对VS的依赖。
入门可以看看