深入《C++ Core Guidelines解析》:提升C++编程实践的关键指南

在这里插入图片描述

目录

  • 1、写在前面
  • 2、推荐理由
  • 3、内容介绍
  • 4、作者介绍
  • 5、赠书 or 购买


1、写在前面

在这里插入图片描述

C++ Core Guidelines是一个正在进行的开源项目,通过将广泛认可的现代C++上佳实践集中在一个地方来解决这些问题。Core Guidelines依赖于几十年的经验和早期的编码规则。它们与C++本身共享一个概念框架,重点是类型安全、资源安全以及消除可避免的复杂性和低效率。发起Core Guidelines的主要目的是解决已知的问题领域,同时使静态分析器能够实施。而《C++ Core Guidelines解析》由C++ 专家讲师 Rainer Grimm提炼出了Core Guidelines中的精髓,去除了晦涩难懂的内容,分享了新的见解和背景,并提供了自己培训课程中经过充分测试的示例

2、推荐理由

  1. 我一直认为学习语言不应该只停留在语法层面,应该深入了解框架和一些思想,而 Core Guidelines聚焦于一些相对高层次的问题,例如接口、资源管理、内存管理以及并发等,可以帮助我们提升思想高度,学习业界行之有效的架构设计思想和理念,所以读一读这本书还是很有必要的
  2. 通俗易懂,案例详细:本书提供了丰富的代码示例和解析,帮助读者更好地理解每个指导原则在实际编码中的应用。这些示例涵盖了各个方面,从编码风格到内存管理、并发编程等
  3. C++ 核心指南是按参考书的方式来组织的。它不是教程,不方便通过从头到尾的顺序阅读来学习如何用好现代 C++,不过本书对C++ Core Guidelines进行了详尽解读,涵盖了每个章节的主要内容和指导原则。读者可以全面了解C++ Core Guidelines的核心思想和实践要点。

3、内容介绍

本书共20个章节

  • 第一章—简介:介绍了本书的目标读者群、目的、非目的、结构和主要部分。
  • 第二章—理念:讨论了C++编程指导原则的理念以及为什么应该遵循这些指导原则。
  • 第三章—接口:重点讨论了构建良好接口的重要性,包括避免使用非 const 全局变量、依赖注入的应用、接口设计等。
  • 第四章—函数:涵盖了函数定义的规则、参数传递的最佳实践、返回值语义等各方面。
  • 第五章—类和类层次结构:介绍了如何设计好的类和类层次结构,包括构造函数、赋值运算符、析构函数、重载和运算符重载。
  • 第六章—枚举:讨论了枚举类型的使用和相关规则。
  • 第七章—资源管理:强调了内存分配和释放的规则,包括智能指针的使用。
  • 第八章—表达式和语句:涵盖了声明、表达式、语句和算术的最佳实践。
  • 第九章—性能:讨论了常见的性能优化错误和如何正确地进行优化。
  • 第十章—并发:介绍了并发和并行编程的基本概念,并讨论了消息传递和无锁编程等技术。
  • 第十一章—错误处理:讨论了设计和实现错误处理机制的最佳实践,包括异常处理和错误处理规则。
  • 第十二章—常量和不可变性:讲解了使用 const 和 constexpr 的规则和最佳实践。
  • 第十三章—模板和泛型编程:涵盖了模板和泛型编程的相关规则和技巧。
  • 第十四章— C 风格编程:讨论了使用C风格的编程的情况下的最佳实践。
  • 第十五章—源文件:探讨了处理接口和实现文件、命名空间的规则。
  • 第十六章—标准库:讨论了C++标准库中容器、文本、输入输出等部分的最佳实践。
  • 第十七章—架构观念:介绍了一些关于架构设计的思考方式和原则。
  • 第十八章—伪规则和误解:澄清了一些常见的误解和伪规则。
  • 第十九章—规格配置:讨论了Pro.type、Pro.bounds、Pro.lifetime等规格配置的使用。
  • 第二十章—Guidelines 支持库:介绍了一些Guidelines支持库中的视图、所有权指针、断言和实用工具。

附录部分包括施行C++ Core Guidelines、概念和契约等内容。

4、作者介绍

Rainer Grimm 自 1999 年以来担任了软件架构师、团队主管和教练,并从 2002 年开始举办 C++、Python 和专有软件的培训班。作为独立培训讲师,他在编程会议上演讲,每周用英语和德语写博客,并撰写了数本关于现代 C++ 和并发的书籍。

译者是吴咏炜、何荣华、张云潮、杨文波。

5、赠书 or 购买

购买链接:《C++ Core Guidelines解析》

购书传送门:https://u.jd.com/v8zuKlc
京东领券地址(无门槛优惠券10元):
APP:https://pro.m.jd.com/mall/active/2Z3HoZGKy5i9aEpmoTUZnmcoAhHg/index.html
PC:https://pro.jd.com/mall/active/2Z3HoZGKy5i9aEpmoTUZnmcoAhHg/index.html

如何参与赠书活动?

点击文章底部微信名片,参与朋友圈赠书活动,点赞8,18,28各送一本,包邮到家!!!

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

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

相关文章

数据结构 每日一练:将带头结点的单链表就地逆置(视频讲解两种方法)

目录 方法一 算法视频分析 方法二 算法视频分析 Q:什么是“就地”捏? A:就是指辅助空间复杂度为O(1),通俗一点来说就是不需要再开辟一块空间来实现算法。 特别说明: 笔者第一次录制视频,言语有些不顺&…

MySQL——常见问题

NULL和空值的区别 1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。 2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。 3、判断NULL 用IS NULL 或者 is no…

SQL Server对象类型(3)——4.3.视图(View)

4.3.1. 视图概念 与Oracle中的视图类似,SQL Server中的视图也是一种虚的、通过一个查询定义的逻辑对象,主要用于集中、简化、定制用户需求,控住其底层表安全,以及应用系统提供向后兼容等方面。 --注: 1)上述内容中的“虚的”,表示视图本身并不实际包含和存储数据,SQL…

Win10 ping 虚拟机kali 请求超时解决办法

出现这种问题应该是windows休眠导致的 这里我的解决方法是先禁用再启用连接 然后再ping 虚拟机ip和kali ip,发现就可以连上了

vue前后端端口不一致解决方案

在config index.js文件中 引入如下代码即可 const path require(path) const devEnv require(./dev.env) module.exports {dev: {// PathsassetsSubDirectory: static,assetsPublicPath: /,proxyTable: devEnv.OPEN_PROXY false ? {} : {/api: {target: http://localhos…

2023高教社杯数学建模国赛B题思路解析+代码+论文

下文包含:2023高教社杯数学建模国赛B题思路解析代码参考论文等及如何准备数学建模竞赛(7号比赛开始后逐步更新) C君将会第一时间发布选题建议、所有题目的思路解析、相关代码、参考文献、参考论文等多项资料,帮助大家取得好成绩。…

工作和生活中,如何用项目管理思维解决复杂的事情?

在工作和生活中,许多事情都可以采用项目思维方式来解决。当我们逐渐将工作和生活中的各种事务以项目的方式来处理和推进时,我们可能并没有意识到,实际上我们正在运用项目管理思维。 项目管理思维能帮助我们在面对繁杂事务时,理清…

PY32F003F18按键输入

一、PY32F003F18的GPIO介绍 1、PY32F003F18的18个I/O,均可作为外部中断; 2、每个GPIO都可以由软件配置为输出: 1)、推挽输出(push-pull) 2)、开漏极输出(open drain) 注意:驱动电流为8mA; 3、每个GPIO都可以由软件配置为输入: 1)、…

android 离线语言合成(文字转语音)

1、基于开源MaryTTS https://github.com/AndroidMaryTTS/AndroidMaryTTS 目前查到的资料,不支持中文,只针对西方语种。 2、基于TensorFlowTTS 官方个地址:为 Android 构建 TensorFlow Lite 库 (google.cn) 所依赖包下载地址:Maven Centr…

ERP辅助报价助力提高效率和准确性

一、ERP辅助报价的定义: ERP辅助报价是指通过企业资源计划系统提供的功能和工具,辅助企业进行报价流程的管理和执行。它涵盖了报价数据的收集、计算、分析和生成报价文件的全过程,以提高报价的准确性、效率和一致性。 二、ERP辅助报价的重要…

LeetCode:2. 两数之和

这个解题思路来自代码随想录&#xff1a;代码随想录 (programmercarl.com) class Solution { public:vector<int> twoSum(vector<int>& nums, int target) {std::unordered_map <int,int> map;for(int i 0; i < nums.size(); i) {// 遍历当前元素&am…

若依前端vue设置子路径

若依前端vue设置子路径 说明&#xff1a;本文档中以前后端分离版为例&#xff0c;版本为:3.8.6 一设置变量 在.env.development和.env.production 中定义一个变量如VUE_APP_PROJECT_IDENTIFIER # 项目标识字符 VUE_APP_PROJECT_IDENTIFIER admin二引用路径变量 ${process…

mysql trace

optimizer_trace 它可以跟踪优化器做出的各种决策&#xff08;比如访问表的方法、各种开销计算、各种转换等&#xff09;&#xff0c;并将跟踪结果记录到 information_schema 数据库中的 optimizer_trace 表中。 mysql 默认是关闭 追踪的 开启、并设置格式为 josn,同时设置trac…

No5.10 咖啡店的营业额

# codingutf-8利润计算器已知的信息如下&#xff1a;咖啡店目前只卖拿铁&#xff0c;每杯售价 24 元&#xff0c;成本为 8 元&#xff1b; 咖啡店每天的水电、人工成本为 500。 接下来请你写一个利润计算器来计算一下咖啡店每天的利润&#xff0c;要求&#xff1a;定义一个名为…

Golang不同平台编译的思考

GOOS和GOARCH $GOOS可选值如下&#xff1a; darwin dragonfly freebsd linux netbsd openbsd plan9 solaris windows $GOARCH可选值如下 386 amd64 arm 在编译的时候我们可以根据实际需要对这两个参数进行组合。更详细的说明可以进官网看看 ## http://golang.org/cmd/go http…

数电课程设计

为了帮助大家更好学习FPGA硬件语言&#xff0c;创立此资源 包含文件有&#xff1a;实验报告、仿真文件&#xff0c;资料很全&#xff0c;有问题可以私信 课设一&#xff1a;加减计数器 一、实验内容 1、利用QuartusII和Modelsim实现100进制可逆计数器编码显示实验。 二、实…

【HttpRunnerManager】搭建接口自动化测试平台操作流程

一、需要准备的知识点 1. linux: 安装 python3、nginx 安装和配置、mysql 安装和配置 2. python: django 配置、uwsgi 配置 二、我搭建的环境 1. Centos7 &#xff08;配置 rabbitmq、mysql 、Supervisord&#xff09; 2. python 3.6.8 &#xff08;配置 django、uwsgi&am…

安全协议的匿名性

匿名性是指&#xff1a;一个对象不能在一组同类型对象的集合中被识别出来&#xff0c;换句话说&#xff0c;它可以隐藏在一组对象集合中&#xff0c;不被识别出来。 目前&#xff0c;提出了 不可关联性和不可观察性两个定义&#xff0c;对于不可关联性&#xff0c;直观的说&…

解决本地jar包导入maven

1、确定是否安装maven 2、输入导入命令 命令说明 <path-to-file>为你jar包所在的路径&#xff08;尽量简单并且不要含中文&#xff09; <group-id>为grouId号&#xff0c;与<artifact-id>组成唯一识别你jar包的坐标&#xff0c;当不在公共资源jar包中&#…

java对mysql的json字段的新增或修改

json mysql对json的支持。方便了一对多的设计&#xff0c;通常一对多的设计需要两张表&#xff0c;一张表a记录“一”&#xff0c;一张表b记录“多”,通常在表b添加一个关联字段记录a的唯一性字段&#xff0c;例如id java对json字段注意点 实体 class A {/*** json字段的属性…