新书速览|你好,C++

《你好,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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/56109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 下 cocos2d-x-3.17.2 VS2017开发环境搭建

1.下载cocos2d-x-3.17.2 源码: Cocos2d-x - 成熟、轻量、开放的跨平台解决方案 2.下载Python2 Python 2.7.0 Release | Python.org 加入环境变量: 测试版本

构建高效作业管理平台:Spring Boot师生协作评审系统

1系统概述 1.1 研究背景 如今互联网高速发展&#xff0c;网络遍布全球&#xff0c;通过互联网发布的消息能快而方便的传播到世界每个角落&#xff0c;并且互联网上能传播的信息也很广&#xff0c;比如文字、图片、声音、视频等。从而&#xff0c;这种种好处使得互联网成了信息传…

Zigbee2MQTT多控网关开发专题:【第一篇】系统配置与初始化

01 前言 本文章原文发表于我的微信公众号&#xff0c;请大家关注阅读&#xff0c;涉及的源代码等都在公众号&#xff0c;请搜索公众号&#xff1a; 智能家居NodeRed和HomeAssistant 即可关注。 02 概述 基于NodeRed的Zigbee2MQTT多功能多控网关开发专题正式开贴&#xff0c;…

Linux shellcheck工具

安装工具 通过linux yum源下载&#xff0c;可能因为yum源的问题找不到软件包&#xff0c;或者下载的软件包版本太旧。 ShellCheck的源代码托管在GitHub上(推荐下载方式)&#xff1a; GitHub - koalaman/shellcheck: ShellCheck, a static analysis tool for shell scripts 对下…

VSCode搭建C/C++开发环境【Windows】

VSCode搭建C/C开发环境 1. 配置C/C开发环境1.1 下载和配置MinGW-w64编译器套件1.2 安装C/C插件 2. 在VSCode上编写C语言代码&#xff0c;并编译执行2.1 先打开一个文件夹&#xff0c;写一份C语言代码2.2 设置C/C编译的选项&#xff1a;c_cpp_properties.json2.3 创建执行任务&a…

Unity MVC框架1-2 实战分析

该课程资源来源于唐老狮&#xff0c;吃水不忘打井人&#xff0c;不胜感激 Unity MVC框架演示 1-1 理论分析-CSDN博客 首先你需要知道什么mvc框架&#xff0c;并且对三个层级有个比较清晰的认识&#xff0c;当然不清楚也好&#xff0c;下面例子中将会十分细心地让你理解&#x…

光控资本:牛市一般维持多长时间?牛市的轮涨顺序是什么?

牛市继续多长时间没有一个统一标准&#xff0c;我们是无法判断牛市什么时候到来&#xff0c;什么时候结束的。以A股牛市前史为例&#xff0c;继续时间从几十天到几年的情况都有&#xff0c;是没有规则可循的&#xff0c;现在A股继续最久的一次牛市是862天。 纵观A股前史&#…

【路径规划】创建末端执行器的路径,导入URDF模型,使用逆向运动学进行路径规划

摘要 本文通过路径规划为机器人末端执行器生成运动路径&#xff0c;采用URDF&#xff08;Unified Robot Description Format&#xff09;导入机器人模型&#xff0c;并结合逆向运动学进行路径规划和控制。使用Matlab进行建模和仿真&#xff0c;以确保执行器沿预定路径顺利运动…

API调用comfyui工作流,做一个自己的app,chatgpt给我写的前端,一键创建自己的卡通形象,附源码

前言 工具介绍 首先 comfyui你是少不了的&#xff0c;这个是工作流的后端支持&#xff0c;用这个去调试工作流和生成API可调用文件 前端我们就用很流行的gradio吧&#xff0c;什么你一时半会没有学gradio的计划&#xff0c;没事&#xff0c;笔者也没系统学过&#xff0c;我干…

Ubuntu18.04安装cuda11.1(出现c++版本问题)

一、概述 需要使用到ubuntu18.04进行cuda的配置&#xff0c;最新版本的cuda跟pytorch的版本不太适配&#xff0c;所以为了能够复现&#xff0c;我选择了一些老版本的cuda11&#xff0c;其使用的范围更加广泛。将自己 二、具体操作 &#xff08;一&#xff09;安装流程 1.官网…

[Linux#62][TCP] 首位长度:封装与分用 | 序号:可靠性原理 | 滑动窗口:流量控制

目录 一. 认识TCP协议的报头 1.TCP头部格式 2. TCP协议的特点 二. TCP如何封装与分用 TCP 报文封装与解包 如何封装解包&#xff0c;如何分用 分离有效载荷 隐含问题&#xff1a;TCP 与 UDP 报头的区别 封装和解包的逆向过程 如何分用 TCP 报文 如何通过端口号找到绑…

帝国CMS系统开启https后,无法登陆后台的原因和解决方法

今天本地配置好了帝国CMS7.5&#xff0c;传去服务器后&#xff0c;使用http访问一切正常。但是当开启了https&#xff08;SSL&#xff09;后&#xff0c;后台竟然无法登陆进去了。 输入账号密码后&#xff0c;点击登陆&#xff0c;跳转到/e/admin/ecmsadmin.php就变成页面一片…

多线程会在一个事务里面吗?

目录 多线程会在一个事务里面吗&#xff1f; 多线程、数据库事务以及数据库连接之间的关系 Spring的事务管理​​​​​​​ 声明式事务Transactional的实现原理 声明式事务Transactional的失效场景 Transactional注解的方法不是public为什么会失效 Spring AOP的代理机制…

【C++】——继承(下)

【C】——继承&#xff08;下&#xff09; 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数&#xff0c;但不是子类的友元函数。也就是说…

【C++】用红黑树模拟实现set与map

目录 一、红黑树的完善&#xff1a; 1、红黑树节点模版的修改&#xff1a; 2、仿函数在模拟实现中的应用&#xff1a; 3、新增迭代器&#xff1a; 4、红黑树中的迭代器实现&#xff1a; 二、set与map的模拟实现&#xff1a; 1、insert&#xff1a; 2、map的[ ]: 三、测…

HTML的介绍

HTML HTML是一种超文本标记语言,超文本是指,除了文本之外,还可能包含图片,音频,或者评注等的 文本形式,比文本强大,通过链接和交互方式来组织和呈现信息.标记语言是指,由标签构成的语言.HTML定义了多种不同的标签,用来表示不同的内容. 标签的介绍: 1.<h3> 三级 </h3&…

如何彻底掌握 JavaScript 23种设计模式

设计模式是解决特定问题的常用解决方案&#xff0c;它们可以帮助开发者编写更清晰、可维护、可扩展的代码。在 JavaScript 中&#xff0c;常见的设计模式可以分为三大类&#xff1a;创建型模式、结构型模式 和 行为型模式。本文将全面介绍 JavaScript 中常见的设计模式&#xf…

云计算第四阶段 CLOUD2周目 01-03

国庆假期前&#xff0c;给小伙伴们更行完了云计算CLOUD第一周目的内容&#xff0c;现在为大家更行云计算CLOUD二周目内容&#xff0c;内容涉及K8S组件的添加与使用&#xff0c;K8S集群的搭建。最重要的主体还是资源文件的编写。 (*^▽^*) 环境准备&#xff1a; 主机清单 主机…

【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

基于YOLO11/v10/v8/v5深度学习的安检X光危险品检测与识别系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…