Effective C++读后感:以对象管理资源

手把手写C++服务器(39):《Effective C++读后感和一些思考 《Effiective C++》是我最喜欢的书籍之一(或许没有之一),里面详细介绍了改善程序设计的55种具体做法,对于C++程序员来说是一笔宝贵的财富,同时也是面试的高频考点,值得每隔一段时间就拿出来复习!! 阅读详情

以对象来管理资源,按我个人的理解来讲就是用构造函数来申请资源,用析构函数来释放资源。这种方法主要适应于那种在函数里申请了资源,而在函数中随时会退出的情况下还要想方设法去释放资源。
C++具体提供了两种智能型的指针:auto_ptr和shared_ptr,它们在初始化的时候获得了申请的对象指针,然后在函数退出的时候即刻释放这个指针。
  shared_ptr它支持拷贝构造函数和赋值构造函数,允许多个shared_ptr指向申请的对象指针。它是采用引用计数的方式来管理对象的,当计数为0的时候就会释放对象,也就释放了指向的对象指针。
我们还需要注意的是auto_ptr和shared_ptr在析构函数里执行的是delete而不是delete[]操作。所以不要用他们来管理动态数组,为什么没有实现delete[],我想主要是因为有vector,string来管理相应的对象了。

两个智能指针的区别是:

auto_ptr管理的对象是以唯一的形式存在,在拷贝构造函数和赋值构造函数调用时会发生对象的转移,即仅有一个有效的auto_ptr存在,上一个auto_ptr会变成空。auto_ptr要求唯一,那么切记不要用两个auto_ptr指向同一个对象指针,不然会释放多次,出现异常。

基于混合LSTM-自动编码器的故障检测与分类,适用于利用MATLAB和Simulink的并网微电网。.zip 1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 立即下载

相关推荐

Jellyfin Media Player 1.12.0 媒体客户端 Windows x64(官方安装版)+ 使用教程

Jellyfin Media Player 是开源(GPL-2.0 协议)的 Jellyfin 官方桌面客户端,连接自建的 Jellyfin 媒体服务器即可浏览和播放影音库,支持字幕选择、倍速播放与多端同步观看进度。本包为官方 x64 安装版 1.12.0,附图文使用教程:客户端安装步骤、连接 Jellyfin 服务器配置、媒体库浏览与播放设置,适合搭建家庭影院媒体中心的用户配套使用。

Effective C++ 读后感

文章目录前言读后感结语 前言 从开始学习Effective C++ 到今天为止 第一遍学习完,历时42天。为什么说是第一遍学习完呢?因为后面肯定还有第二遍第三遍…复习与巩固。**谈谈为啥要学习这本书呢?**其实笔者很久之前都听说过这本书的大名,早早的都下载好了,这本书的pdf一直被尘封在我的笔记本上的Book目录。源于之前在北京某互联网教育公司的一次面试,问了很多问题 来源这本书,笔者没准备当然被虐的很惨。所以笔者当然要把这本书拿下。学习完这本书,你应该会对C++编程有一个更深刻的认识,当然也不限于面试,也

重庆李四 1470

ets中文教程-下载即用.zip

打开链接下载源码: https://pan.quark.cn/s/e18529987bb9 ### ETS中文教程:KNX施耐德智能家居 #### 知识点一:ETS软件概述与启动 ETS(Engineering Tool Software)是由施耐德电气研发的一款专业设计工具,其核心功能在于构建和配置基于KNX标准的智能家居及楼宇自动化系统。KNX代表一种国际公认的开放式标准,该标准在楼宇自动化领域得到广泛应用,其目的是实现不同品牌设备之间的互联互通。 **软件启动方法**:ETS软件可以通过双击其图标来启动,或者从开始菜单中选择“File”->“New Project”,亦或直接使用Ctrl+N快捷键来启动该软件。 #### 知识点二:工程项目创建 在启动新的工程项目时,需要遵循以下流程: 1. **项目命名**:推荐使用数字与字母的组合来命名项目,例如“Officebuildings”,这样的命名方式有助于日后的管理和识别。 2. **构建建筑物模型**:在“Buildings/Functions”部分添加建筑物,自定义其名称(例如“mg”),并确认创建操作。 3. **添加房间**:针对每一个建筑物,可以进一步添加房间,同样地,为房间自定义名称(如“1F”),以此来构建完整的建筑模型。 #### 知识点三:设备加载与配置 设备加载是ETS软件中的核心环节,其作用在于将实际的智能设备(包括开关、传感器等)整合到项目中: 1. **设备加载过程**:在目标房间处进行右键点击,选择“Add Devices”,随后通过“Product Finder”对话框选择合适的制造商和产品系列,以此来加载所需的设备类型。 2. **地址分配**:在设备加载完成后,应手动为其分配独...

EffectiveC++-读后感

## 一. 内容 1. 正如序言所说,`这是一本讲 C++ 语言特性和编程技巧的书`,对于想要进一步学习 C++ 的同学来说,是不可多得的好书,如果对此有深入的兴趣,看完的同学可以试试作者的另外两本书:《More Effective C++》和《Effective STL》,同样是讲规范,讲准则,讲高效做法的书籍,值得一试。 2. 从考试结束后,不算之前零碎的时间,共计 `21` 天完成所有条款的学习和笔记,其中前 `7` 天完成书籍的阅读和笔记,后 `14` 天 完成博客的摘录和代码的测试。初次体会到:一

MoOtA 426

Effective C++读书笔记之十三:以对象管理资源

Item 13:Use objects to manage resources 假设我们使用一个用来塑膜投资行为的程序库,其中各式各样的投资类型继承自一个root class: class Investment { ... };  //“投资类型”继承体系中的root class 进一步假设,这个程序系通过一个工厂函数(工厂函数会“返回一个base class指针,指向新生成

极客时代 806

Effective C++读书笔记(条款18-23)

____________________________________________________________________________________________________________________________________ 条款18:让接口容易被使用,而不容易被误用 #1.导入新类型可以让接口不易被误用,以函数替换对象则可以保证类型安全性。 例如

指月的手指,成不了月亮,更得不到月亮!! 2866

effective C++ 读后感(七)为多态基类声明virtual析构函数

七、为多态基类声明virtual析构函数

warrenfws的专栏 482

effective C++ 改善程序与设计的55个具体做法》读书笔记第一弹

说明:部分涉及C++较高级功能的条款,如智能指针、并行编程等暂不研读,后续用到这部分再说,涉及这部分的条款仅标注并跳过不研究 1. 条款01 2. 条款02–尽量以const、enum、inline替换 #define 对于单纯常量,最好以const对象或者enums替换#define; 对于形似函数的宏,最好改用inline函数替换#define; 3. 条款03–尽可能使用const const对指针变量 char p1[]="Hello"; char* p2=p1; const char* p

Nancy_fairy的博客 231

读书笔记《Effective C++》条款18:让接口容易被正确使用,不易被误用

function接口,class接口,template接口......每一种接口都是客户与代码互动的手动。

Do-Program的专栏 270

js excel to json object

代码下载链接: https://pan.quark.cn/s/a4b39357ea24 在客户端编程中,有时我们需要对用户上传的Excel文件内容进行管理,并将其转化为JSON格式以便进行后续操作或与服务器端进行数据交换。这一过程通常包含文件读取、数据解析以及格式转换等步骤。以下是一些关于如何运用JavaScript达成这一功能的核心要点: 1. **File API**:在当前版本的浏览器中,我们可以借助File API来获取用户上传的文件。`FileReader`对象提供了异步获取文件内容的方法,例如`readAsArrayBuffer()`,用于读取文件内容。 2. **XLSX库**:由于浏览器自带的API不直接支持Excel文件的解析,我们需要借助第三方库。其中,`xlsx`库是一个广受欢迎的选择,它能解析多种Excel文件格式(如XLS、XLSX、CSV等)并提供便捷的数据操作接口。 3. **获取Excel文件**:借助`xlsx`库,我们首先需要将File API获取到的`ArrayBuffer`转换为可解析的格式。例如,可以调用`XLSX.read(arrayBuffer, {type: buffer})`进行格式转换。 4. **解析工作表内容**:`xlsx`库解析完成后,会返回一个对象,其中包含了所有工作表的信息。我们可以通过`XLSX.utils.sheet_to_json(worksheet)`方法将单个工作表转换为二维数组,这类似于Excel中的表格数据。 5. **转化为JSON对象**:二维数组可以很方便地转化为JSON对象。遍历数组,每行数据作为JSON对象的一个属性,属性名为单元格的列名,属性值为单元格的值。可以使用`Arr...

EasyEUICC-v1.7.2.apk

EasyEUICC-v1.7.2.apk

CadLib4.0-下载即用.zip

源码下载地址: https://pan.quark.cn/s/de26074cf420 CadLib4.0被定位为一个功能丰富的.NET CAD类库,它为开发人员提供了在C#或其它.NET编程语言环境中嵌入CAD功能的可能性,从而简化了DWG和DXF文件的构建与修改过程。这个压缩文件内含了必要的DLL组件以及一个基于WinForms的应用实例,该实例清晰展示了在Visual Studio 2010开发环境中如何进行CAD文件的读取和处理,特别是对于AutoCAD 2014所支持的最新文件格式具备良好的兼容性。 1. **CadLib**:CadLib作为核心的类库,为与AutoCAD的DWG和DXF文件进行交互提供了接口和实现机制。它通过封装CAD数据结构和相关操作,让开发人员无需深入探究底层CAD格式细节,即可便捷地完成CAD文件的输入输出操作。 2. **WW.Cad.dll**:此DLL文件被视为CadLib的核心构成部分,其中汇集了所有与CAD操作直接关联的类和函数。例如,开发人员可借助此库来初始化新的图纸,向其中添加各类几何元素(比如直线、圆形、多段线等),或是提取已有图纸中的数据信息。 3. **WW.dll**:该DLL可能扮演着CadLib的辅助角色,里面存放了通用的工具函数和类,它们为CadLib各项功能的实现提供了支持。这些功能可能涵盖数据转换、异常管理或图形的视觉呈现等方面。 4. **WW.Pdf.dll**:此文件或许具备将CAD图纸内容转换为PDF文档的能力。开发者可利用这一特性,将设计成果导出为PDF格式,方便进行打印或在线传播,而无需借助AutoCAD软件。 5. **WW.GL.dll**:从其命名推断,该文...

火焰yolo图片数据集

YOLO 火焰数据集,为单类别`fire`目标检测数据集,图片涵盖室内明火、野外火情等场景,包含暗光、反光等干扰画面。

高校技术转移中心如何通过标准化服务提升成果转化成功率?.docx

科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。

上一篇: 多线程之linux线程调度策略
下一篇: 简单工厂模式和策略模式的区别
ByPerseverance
博客等级 码龄12年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值