新书速览|你好,C++

发布于:2024-10-12 ⋅ 阅读:(11) ⋅ 点赞:(0)

《你好,C++》

本书内容

《你好,C++》主要介绍C++开发环境的搭建、基础语法知识、面向对象编程思想以及标准模板库的应用,特别针对初学者在学习C++过程中可能遇到的难点提供了解决方案。全书共分13章,以一个工资程序的不断优化和完善为线索,展示了如何利用C++进行设计和解决实际问题。《你好,C++》遵循最新的C++23标准,更新了所有代码和讲解,并增加了新标准引入的特性,如智能指针、std::thread等,使读者能够掌握最新的C++知识。每章末尾都配有“本章练习”,帮助读者通过实际编写代码来加深对知识的理解。

本书作者

陈良乔,程序员、自由撰稿人,毕业于西安交通大学。敏而好学,乐于分享,连续六年获得微软最有价值专家(MVP)称号。因撰写一系列Visual Studio 2010技术文章和Windows 7开发技术文章,2010年获“MSDN原创之星”称号。曾组织翻译Bjane Stroustrup的《C++11 FAQ》。著有《我的第一本C++书》和《C语言程序伴侣》。

本书读者

《你好,C++》语言风格轻松幽默,还收录了一些公司的典型笔试题,无论是C++初学者还是中级程序员提升技能,都是极佳的选择。同时,《你好,C++》也适合作为应用型本科及高职高专相关专业的教材使用。

本书目录

目    录

第1篇  叩开C++世界的大门

第1章  C++世界地图 2

1.1  我们的第一个C++程序 2

1.1.1  下载并安装Visual Studio社区版 2

1.1.2  创建“你好,C++”项目 3

1.1.3  编辑代码,生成并运行C++程序 3

1.2  C++是什么 5

1.3  C++的“前世今生” 6

1.3.1  从B到C 6

1.3.2  从C到C++ 7

1.3.3  更简单、更高效:C++23让C++续写传奇 7

1.4  三分天下:C++世界版图 8

1.4.1  Windows系统下的C++开发 8

1.4.2  UNIX/Linux系统下的C++开发 9

1.4.3  嵌入式系统下的C++开发 9

1.5  如何学好C++ 9

1.5.1  “多读多写多思考”是学好C++的唯一途径 10

1.5.2  和百度等搜索引擎做朋友 10

1.5.3  使用配备GPT-4的Microsoft Copilot这一AI小助手 11

1.5.4  C++词典cplusplus.com 11

1.6  本章练习 12

第2章  与C++的第一次亲密接触 13

2.1  一个C++程序的自白 13

2.1.1  C++程序=预处理指令+程序代码+注释 13

2.1.2  程序的“父母”:编译器和链接器 18

2.1.3  C++程序的执行过程 19

2.1.4  程序的两大任务:描述数据与处理数据 21

2.2  基本输入/输出流 22

2.2.1  标准的输入和输出对象 23

2.2.2  输出格式控制 24

2.2.3  读/写文件 25

2.3  本章练习 28

第2篇  欢迎来到C++的世界

第3章  C++世界众生相 30

3.1  C++中的数据类型 30

3.2  变量和常量 31

3.2.1  变量的定义与初始化 32

3.2.2  常量 36

3.3  数值数据类型 42

3.3.1  整数类型 42

3.3.2  浮点数类型 45

3.4  布尔类型 48

3.5  字符串类型 50

3.5.1  字符类型 50

3.5.2  字符串类型 51

3.6  数组 55

3.6.1  数组的声明与初始化 55

3.6.2  数组的使用 56

3.7  枚举类型 57

3.8  用结构体类型描述复杂的事物 60

3.8.1  结构体的定义 60

3.8.2  结构体的使用 61

3.9  指向内存位置的指针 63

3.9.1  内存空间的访问形式 64

3.9.2  指针变量的定义 64

3.9.3  指针的赋值和使用 65

3.10  本章练习 68

第4章  将语句编织成程序 69

4.1  用运算符对数据进行运算 69

4.1.1  用表达式表达设计意图 70

4.1.2  算术运算符 71

4.1.3  赋值运算符 72

4.1.4  关系运算符 73

4.1.5  逻辑运算符 76

4.1.6  运算符之间的优先顺序 78

4.1.7  将表达式组织成语句 80

4.2  条件选择语句 81

4.2.1  if语句:如果……那么…… 81

4.2.2  表达并列条件选择的switch语句:如果……如果……如果…… 85

4.3  循环控制语句 89

4.3.1  while循环:只要……就一直…… 89

4.3.2  do…while循环:一直……只要…… 91

4.3.3  for循环:在某个范围内……每个都…… 93

4.3.4  循环控制:break和continue 95

4.4  从语句到程序 98

4.4.1  用三种流程控制结构将多条语句串联成程序 98

4.4.2  工资程序成长记:用数组处理批量数据,用循环结构执行重复操作 100

4.5  本章练习 103

第5章  用函数封装程序功能 105

5.1  函数就是一个大“箱子” 105

5.1.1  函数的声明和定义 106

5.1.2  函数调用机制 110

5.1.3  函数参数的传递 115

5.1.4  函数的返回值 117

5.1.5  函数的递归调用 118

5.2  内联函数 121

5.2.1  用空间换时间的内联函数 121

5.2.2  内联函数的使用规则 122

5.3  重载函数 123

5.3.1  重载函数的声明 123

5.3.2  重载函数的解析 125

5.4  函数设计的基本原则 126

5.4.1  函数声明的设计规则 126

5.4.2  函数体的设计规则 128

5.4.3  工资程序成长记:函数 134

5.5  本章练习 138

第6章  当C++爱上面向对象 139

6.1  从结构化程序设计到面向对象程序设计 139

6.1.1  “自顶向下,逐步求精”的面向过程程序设计 140

6.1.2  万般皆对象:面向对象程序设计 141

6.1.3  面向对象程序设计的三座基石:封装、继承与多态 142

6.2  类:当C++爱上面向对象 145

6.2.1  类的声明和定义 145

6.2.2  使用类创建对象 150

6.2.3  一个对象的生与死:构造函数和析构函数 152

6.2.4  有一只叫作多利的羊:拷贝构造函数 156

6.2.5  运算符重载 162

6.2.6  类是如何藏私房钱的:类成员的访问控制 164

6.2.7  在友元中访问类的隐藏信息 167

6.3  类如何面向对象 170

6.3.1  用类机制实现封装 170

6.3.2  用基类和派生类实现继承 172

6.3.3  用虚函数实现多态 179

6.4  工资程序成长记:类与对象 187

6.4.1  需求分析:老板要的是这样一个工资程序 188

6.4.2  从问题描述中发现对象 189

6.4.3  分析对象的属性和行为 189

6.4.4  依葫芦画瓢:用C++表达设计结果 191

6.5  高手是这样炼成的 201

6.5.1  C++类对象的内存模型 201

6.5.2  指向自身的this指针 204

6.6  本章练习 206

第7章  C++世界的奇人异事 207

7.1  一切指针都是纸老虎:彻底理解指针 207

7.1.1  指针的运算 207

7.1.2  灵活的void类型和void类型指针 209

7.1.3  指向指针的指针 211

7.1.4  指针在函数中的应用 213

7.1.5  引用—给变量起个好听好记的绰号 216

7.2  亡羊补牢—程序中的异常处理 220

7.2.1  异常处理 220

7.2.2  异常的函数接口声明 222

7.3  编写更复杂的C++程序 223

7.3.1  源文件和头文件 223

7.3.2  命名空间 225

7.3.3  作用域与可见性 228

7.3.4  编译前的预处理 230

7.4  高手是这样炼成的 232

7.4.1  用宏定义化繁为简 232

7.4.2  使用typedef给数据类型取个外号 233

7.4.3  C++世界的管家婆—用const保护数据 235

7.5  本章练习 238

第3篇  攀登C++世界的高峰

第8章  用STL优化你的程序 240

8.1  跟STL做朋友 241

8.1.1  算法 + 容器 + 迭代器 = STL 241

8.1.2  在程序中使用STL 242

8.2  用模板实现通用算法 244

8.2.1  函数模板 245

8.2.2  类模板 247

8.3  本章练习 250

第9章  用STL中的容器管理数据 251

9.1  容器就是STL中的瓶瓶罐罐 251

9.1.1  操作容器中的数据元素 253

9.1.2  使用迭代器访问容器中的数据元素 254

9.1.3  容器的使用说明书 256

9.1.4  如何选择合适的容器 258

9.2  vector容器是数组的最佳替代者 259

9.2.1  创建并初始化vector对象 259

9.2.2  对vector容器的操作 261

9.2.3  访问vector容器中的数据 262

9.3  可以保存键-值对的map容器 262

9.3.1  创建并初始化map容器 263

9.3.2  将数据保存到map容器中 264

9.3.3  根据键找到对应的值 265

9.4  本章练习 266

第10章  用STL中的通用算法处理数据 268

10.1  STL算法中的四大类别 268

10.2  容器元素的遍历与查找 270

10.2.1  用for_each()算法遍历容器中的数据元素 270

10.2.2  用find()和find_if()算法从容器中挑选数据 271

10.3  容器元素的复制与变换 275

10.3.1  复制容器元素:copy()算法 275

10.3.2  合并容器元素:merge()算法 278

10.3.3  变换容器元素:transform函数 280

10.4  容器元素的排序 282

10.4.1  使用sort()算法对容器中的数据进行排序 282

10.4.2  自定义排序的规则 285

10.5  实战STL算法 287

10.5.1  “算法”老师带来的一堂别开生面的体育课 287

10.5.2  删除容器中的冗余元素 292

10.6  本章练习 293

第11章  函数的三件“马甲”:函数指针、函数对象与Lambda表达式 294

11.1  函数指针 294

11.1.1  函数指针的定义、赋值与使用 294

11.1.2  用函数指针实现回调函数 296

11.1.3  将函数指针应用到STL算法中 298

11.2  函数对象 300

11.2.1  定义一个函数对象 300

11.2.2  利用函数对象记住状态数据 301

11.3  用Lambda表达式编写更简单的函数 304

11.3.1  最简单直接的函数表达形式:Lambda表达式 304

11.3.2  Lambda表达式的定义与使用 305

11.4  程序成长记:容器与算法,让我们爱上C++ 308

11.5  本章练习 312

第12章  C++世界的几件新鲜事 313

12.1  右值引用进一步提升C++的性能 313

12.1.1  什么是右值引用 313

12.1.2  右值引用是如何提高性能的 314

12.2  智能指针shared_ptr 318

12.2.1  痛并快乐着:C++中的内存管理 318

12.2.2  引用计数:shared_ptr为什么这么聪明 319

12.2.3  智能指针shared_ptr的应用场景 321

12.2.4  shared_ptr的使用 323

12.2.5  自定义shared_ptr的释放行为 327

12.3  用<thread>进行多线程开发 328

12.3.1  利用thread创建线程 329

12.3.2  利用future和promise简化线程的返回值操作 332

12.3.3  利用mutex处理线程之间共享资源的竞争 337

12.4  本章练习 341

第13章  找工作就靠它了 342

13.1  打好基础 342

13.1.1  基本概念 342

13.1.2  函数 345

13.1.3  面向对象程序设计 347

13.1.4  类与对象 349

13.1.5  STL 358

13.2  积累经验 361

13.3  考查智力 364

本书特色

本文摘自《你好,C++》,获出版社和作者授权发布。

你好,C++——jd