Effective C++ 改善程序与设计的55个具体做法笔记与心得 9

九. 杂项讨论

53. 不用轻忽编译器的警告

请记住

  • 严肃对待编译器发出的警告信息。努力在你的编译器的最高(最严苛)警告级别下争取“无任何警告”的荣誉。
  • 不要过度倚赖编译器的报警能力,因为不同的编译器对待事情的态度并不相同。一旦移植到另一个编译器上,你原本倚赖的警告信息有可能消失。

解释

  • 严肃对待编译器发出的警告信息:编译器的警告信息旨在提醒开发者代码的某些地方可能存在问题,如潜在的内存泄漏、未使用的变量、过时的函数等,这些问题可能会导致程序在运行时产生未定义行为,所以对待这些警告应该认真处理,而不是简单地忽视。

  • 努力在你的编译器的最高(最严苛)警告级别下争取无任何警告的荣誉:这句话的意思是建议在编写代码的时候,尽可能在编译器的最高警告级别下编写出无警告的代码,这样可以尽早发现和修复程序中的问题,提高代码质量。

  • 不要过度依赖编译器的报警能力:虽然编译器的警告信息能帮助我们发现一些问题,但是不同的编译器其报警的规则和标准可能会有所不同,并不能找出所有的错误。很有可能在一个编译器下没有警告的代码,在另一个编译器下就可能出现警告,这种情况在跨平台开发时尤为常见。

所以,良好的习惯是写出清晰、规范的代码,不应过度依赖于编译器警告,而应积极预防可能的问题,提高代码的健壮性和可移植性。

54. 让自己熟悉包括TR1在内的标准程序库

请记住

  • ‌‌‌‌  C++标准程序库的主要机能由STL、iostreams、locales组成。并包含C99标准程序库。
  • ‌‌‌‌  TR1添加了智能指针(例如tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based容器、正则表达式以及另外10个组件支持。
  • ‌‌‌‌  TR1自身只是一份规范。为获得TR1提供的好处,你需要一份实物。一个好的实物来源是Boost。

解释

  • C++标准程序库的主要机能由STL、iostreams、locales组成:这里讲的是C++标准库的主要组成部分。STL(Standard Template Library)是C++标准模板库,包含了一系列模板类和函数,用于常见的数据结构和算法,如向量、列表、队列、栈等。iostreams提供了进行输入/输出操作的函数和对象,例如cin、cout。而locales则提供了关于国际化和本地化的支持。

  • 并包含C99标准程序库:这说明C++标准库包含了在C99标准中定义的所有库,这使得C++程序员可以方便地使用一系列基础和高级的C功能。

  • TR1添加了智能指针(例如tr1::shared_ptr)、一般化函数指针(tr1::function)、hash-based容器、正则表达式以及另外10个组件支持:TR1是在C++03标准之后添加的一次重大扩展,提供了很多新的便利功能。包括智能指针(自动管理内存的对象)、一般化的函数指针(可以保存任何形式的可调用对象的对象)、基于哈希的数据结构(如unordered_map或unordered_set)以及正则表达式(用于文本模式匹配)等。

  • TR1自身只是一份规范:这句话的意思是,TR1只是一个技术报告,定义了语言应有的特性,但它本身并不包含任何可以运行的代码。

  • 为获得TR1提供的好处,你需要一份实物:这指的是你需要一个包含TR1定义内容的库实现,才能在编程中利用到TR1的功能。

  • 一个好的实物来源是Boost:Boost是一个非常知名的C++库集合,包括了大量用于解决常见问题的库。其中就包含了TR1规范中的很多特性,所以它是使用TR1功能的一个很好的选择。

上面这句话主要是在讲解C++的一个技术报告(Technical Report 1,简称TR1)是如何被实现以及如何利用的。

  • TR1自身只是一份规范:这表明TR1并不是一个可以直接使用的软件或者代码,而是一份关于C++语言扩展的技术标准或规范,规定了一些新的特性和功能应该如何表现。

  • 为获得TR1提供的好处,你需要一份实物:这里的"实物"指的是实现了TR1规范的代码库。虽然TR1定义了一系列的功能和接口,但是你只可能利用到它们当有人或者组织采纳这一规范,并在其代码库中提供了实现时。之所以需要实现,是因为规范只是一种规定,规定了功能应该如何工作,但是并没有具体的代码,需要开发人员根据规范编写具体的代码实现。

  • 一个好的实物来源是Boost:Boost是C++中表现杰出的一个开源库,实现了许多C++的高级特性,包括TR1中的许多功能。这句话是建议说,如果你想在代码中使用TR1规定的特性,可以选择使用Boost库,因为Boost库针对这些特性,提供了良好的实现。

55. 让自己熟悉Boost

请记住

  • ‌‌‌‌  Boost是一个社群,也是一个网站。致力于免费、源码开放、同僚复审的C++程序库开发。Boost在C++标准化过程中扮演深具影响力的角色。
  • ‌‌‌‌  Boost提供许多TR1组件实现品,以及其他许多程序库。

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

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

相关文章

为什么接口返回的是二进制流的文件时,前端请求时responseType要设置成‘blob‘

当接口返回的是二进制流的文件时,前端在发起axios请求时需要设置responseType为blob,原因有以下几点 1、数据类型匹配: blob类型能够正确处理二进制数据。如果前端请求不设置responseType,默认情况下,浏览器会尝试解析…

在创意设计领域“刷屏”的人工智能生成内容(AIGC)是什么?

在创意设计领域“刷屏”的人工智能生成内容(AIGC)是什么?这是一个值得深入探讨的话题,它关乎技术的革新、创意的边界以及未来设计行业的走向。随着人工智能技术的飞速发展,AIGC(Artificial Intelligence Ge…

k8s_docker和container的关系和区别

Docker 和 containerd 是容器生态系统中的两个重要组件,它们各自有不同的角色和职责。以下是对它们之间关系和区别的详细解释。 Docker 和 containerd 的关系 Docker: Docker 是一个完整的容器平台,提供了一系列工具来构建、分发和运行容器化…

聚鼎贸易:装饰画行业还有没有前景

在数字化的浪潮中,装饰画行业似乎被边缘化,成为传统与现代较量中的一片瓦砾。然而,透过表面的凋零,我们能够窥见其潜藏的蓬勃生机与无限前景。 随着社会的快速发展,人们对生活品质的追求日益提高。家,作为个…

Spring Cloud OpenFeign基础入门与使用实践总结

官网地址&#xff1a;https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#spring-cloud-feign GitHub地址&#xff1a;https://github.com/spring-cloud/spring-cloud-openfeign 本文SpringCloud版本为&#xff1a; <spring.boot.version>3…

火锅食材配送小程序的作用有什么

火锅店、麻辣烫店、餐厅等对火锅丸子食材的需求量很高&#xff0c;还有普通消费者零售等&#xff0c;市场中或城市里总是有着较为知名的食材店或厂商&#xff0c;通过产品质量、口碑、宣传、老客复购等获得更多生意营收。 线下生意放缓&#xff0c;需要商家拓宽渠道。运用雨科…

2、网上图书订购

完整DDLDML SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for administarators -- ---------------------------- DROP TABLE IF EXISTS administarators; CREATE TABLE administarators (admin_id int(11) NOT NULL AU…

搜维尔科技:SenseGlove Nova2国内首款支持手掌心力回馈手套开售

《SenseGlove Nova 2》现正全球发行中! 搜维尔科技独家代理最新上市的 SenseGlove Nova 2 是世上首款&#xff0c;也是目前市面上唯一一款提供手掌力回馈的无缐VR力回馈手套&#xff0c;它结合了三种最先进的反馈技术&#xff0c;包括主动反馈、强力反馈及震动反馈&#xff0c…

基于横纵向的混合联邦学习原理分析

近期陆续接触到关于混合联邦学习的概念&#xff0c;但基于横纵向的混合联邦实际的应用案例却几乎没有看到&#xff0c;普遍是一些实验性的课题&#xff0c;因此这一领域知识没有被很好普及。本篇文章的目的&#xff0c;主要是分析讨论关于横纵向混合联邦学习的业务场景、应用架…

nginx: [warn] 20240 worker_connections exceed open file resource limit: 1024

nginx: [warn] 20240 worker_connections exceed open file resource limit: 1024 报错翻译过来就是&#xff1a; nginx&#xff1a;[警告] 20240 worker_connections超出打开文件资源限制&#xff1a;1024 解决方法&#xff1a; 1.查看当前文件打开数量的限制 ulimit -S…

2024软博会

2024年&#xff0c;金秋的十月&#xff0c;青岛国际会展中心迎来了一年一度的科技盛宴——青岛国际软件融合创新博览会&#xff08;简称“青岛软博会”&#xff09;。这场为期三天的展会&#xff0c;不仅吸引了全球软件产业的目光&#xff0c;更成为了展示中国软件产业发展成果…

OpenHarmony南向驱动开发实战-Input

简介 该仓下主要包含Input模块HDI&#xff08;Hardware Driver Interface&#xff09;接口定义及其实现&#xff0c;对上层输入服务提供操作input设备的驱动能力接口&#xff0c;HDI接口主要包括如下三大类&#xff1a; InputManager&#xff1a;管理输入设备&#xff0c;包括…

数据库系统概论(超详解!!!) 第十四节 数据库恢复技术

1.事务的基本概念 1.事务 事务(Transaction)是用户定义的一个数据库操作序列&#xff0c;这些操作要么全做&#xff0c;要么全不做&#xff0c;是一个不可分割的工作单位。 事务和程序是两个概念&#xff0c; 在关系数据库中&#xff0c;一个事务可以是一条SQL语句&#xff…

rockey linux rpm安装mysql 8.4.0

背景介绍&#xff1a; 系统 rockey linux 9.4 mysql 8.4.0 我一开始想在系统上安装5.7的着&#xff0c;因为我有这个包&#xff0c;但是通过rpm安装的时候&#xff0c;到最后一步提示我没有/usbin/chkconfig 这个目录&#xff0c;怀疑是系统的问题&#xff0c;然后想安装chk…

未来先行!MWC 2024 世界移动通信大会盛大开幕!!!

2024MWC上海世界移动通信大会&#xff0c;在上海新国际博览中心&#xff08;SNIEC&#xff09;盛大开幕。 今年&#xff0c;MWC的主办方GSMA&#xff08;全球移动通信系统协会&#xff09;为这届MWC定下了一个主题——“Future First&#xff08;未来先行&#xff09;”。各大…

内网穿透技术

内网穿透&#xff08;NAT traversal&#xff09;是一种技术&#xff0c;用于实现公网与内网之间的通信连接。当内网中的设备无法直接从公网访问时&#xff0c;内网穿透技术可以通过一些手段&#xff0c;让公网上的设备能够穿透到内网中的设备&#xff0c;建立起通信连接。 说白…

盘点7款适合团队使用的知识库工具

作为一名技术爱好者和企业管理者&#xff0c;我深知知识库工具在日常工作中的重要性。 无论是个人笔记管理还是企业知识共享&#xff0c;知识库工具都能极大地提升我们的工作效率和信息管理水平。 根据麦肯锡全球研究院报告显示&#xff0c;使用知识库工具可以帮助个人或者企…

记录一次java web接口压测调优过程

3台8核服务器&#xff0c;目标400tps 1、server采用的线程数200&#xff0c;队列100&#xff0c;借鉴tomcat Tomcat作为一款流行的Java Web服务器&#xff0c;其默认配置覆盖了从端口设置、应用部署、日志记录到性能调整等多个方面。以下是一些关键的默认配置概览&#xff1a…

windows11 OneDrive禁止开机自启动。

1、先上个图&#xff1a; 开机默认自启&#xff0c;然后设置中&#xff0c;也没有找到可以设置的。 2、然后我们通过任务管理器来处理&#xff0c;右键任务栏&#xff1a; 打开任务管理器&#xff1a; 选中OneDrive&#xff0c;然后点击【禁 用】按钮即可。 或者鼠标右键&…

【C++:list】

list概念 list是一个带头的双向循环链表&#xff0c;双向循环链表的特色&#xff1a;每一个节点拥有两 个指针进行维护&#xff0c;俩指针分别为prev和next,prev指该节点的前一个节点&#xff0c;next为该节点的后一个节点 list的底层实现中为什么对迭代器单独写一个结构体进行…