Effective C++笔记 3

如何读懂CiteSpace图谱?科研小白必看的节点颜色/年轮/聚类解读手册 本文详细解析CiteSpace图谱的核心视觉元素,包括节点颜色、年轮和聚类标识,帮助科研人员准确解读数据分析结果。通过生物医学案例展示如何从图谱中识别关键文献和研究趋势,提供五步系统解读法和常见错误规避策略,助力科研小白快速掌握文献计量分析技巧。 阅读详情

本文内容基本来自于《Effective C++》一书,为学习后的笔记,以便温故。


《Effective C++ 》第 3节  资源管理

(1)条款13:以对象管理资源

          为防止资源泄漏,请使用RAII(Resource Acquisition Is Initialliztion资源取得时机便是初始化时机)对象,它们在构造函数中获得资源并在析构函数中释放资源。

          两个常被使用的RAII classes分别时tr1::shared_ptr(引用计数型智慧指针RCSP)和auto_ptr(标准库中的智能指针)。前者通常是较佳选择,因为其copy行为比较直观。若选择auto_ptr,复制动作会使他指向NULL。

(2)条款14:在资源管理类中小心copying行为

         复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为。(例如:常见的一个错误就是,对象A中存在对另外一个对象B的引用,此时使用默认的copy函数复制该对象A为C,那么在C析构的时候会将B删除掉,A在析构的时候就会出错)

         普遍而常见的RAII class copying行为是:抑制copying, 施行引用计数法(shared_ptr类似方法)。不过其他行为也可能被实现。

(3)条款15:在资源管理类中提供对原始资源的访问

         APIs往往要求访问原始资源,所以每一个RAII class应该提供一个“取得其所管理之资源”的办法。(例如:shared_ptr,auto_ptr重载了指针取值操作符( -> 和 *),或者提供一个get()函数,返回一个原始指针)

       对原始资源的访问可能经由显示转换或者隐式转换。一般而言显式转换比较安全,但是隐式转换对客户比较方便。

(4)条款16:成对使用new和delete时要采取相同的形式

          int* p = new int[5];  delete p;  //这样是错误的,只删除了第一个元素的内存空间。

          如果你在new表达式中使用[],必须在相应的delete表达式中也使用[],如果你在new表达式中不使用[],也一定不要在delete中使用[]

(5)条款17:以独立语句将newed对象置入智能指针。

          例如:函数 void processWidget(std::tr1::shared_ptr<Widget> pw, int priority);在具体调用的时候使用如下方式:

                      processWidget(std::tr1::shared_ptr<Widget> (new Widget), priority);该函数中在调用该函数之前需要做三件事情:

                       A :调用 priority         B:执行 new Widget      C: 调用tr1::shared_ptr构造函数

                      此时,如果这样对函数进行调用,会有资源泄漏的可能性。因为C++编译器对于这三个事情的执行顺序没有严格的规定。如果 new在第一个位置执行,priority在第二个执行,此时在执行第二个出错的时候,new出来的资源就无法放入智能指针中,也就造成了资源泄漏。

           以独立的语句将newed对象存储于智能指针中,如果不这样做一旦抛出异常,就有可能导致资源泄漏。

            


      

UG NX二次开发(C#)-外部模式-批量删除某些图层中的体对象和曲线对象 在 UG NX中,有时需要批量删除某文件夹下多个.prt文件中固定一些图层中的体对象和曲线对象,这时如果采用手动逐个打开模型,并选择针对的图层删除,即耗时也容易遗漏,因此采用外部模式来处理比较方便。本文介绍批量删除某些图层中的体对象和曲线对象。 阅读详情

相关推荐

华为无线AP+AC(ensp)

VLAN 100--192.168.100.0/24为AP的管理IP地址VLAN10--192.168.10.0/24为无线用户获取的IP地址在DHCP Server(LSW3)上查看地址分配情况。

abcdlalal的博客 1万+

【Effective C++笔记 (3-4)】

手动初始化内置类型对象:由于C++不保证内置类型对象的自动初始化,务必在代码中显式进行初始化。优先使用成员初始化列表:在构造函数中,最好使用成员初始化列表(member initialization list)来初始化成员变量,而避免在构造函数体内进行赋值操作(assignment)。保持初始化顺序一致:成员初始化列表中成员变量的排列顺序应与类中声明的顺序相同,以避免潜在的初始化顺序问题。

limingkang1的博客 829

芯片良率提升:从设计到制造的系统性工程实践

在半导体制造领域,良率是衡量生产效率和成本控制的核心指标,直接关系到芯片的经济效益与市场竞争力。其本质是合格芯片占总产出芯片的百分比,提升良率需要从设计源头到制造末端的全流程协同优化。从技术原理看,它涉及可制造性设计、工艺过程控制、缺陷检测与根因分析等多个复杂环节,尤其在先进制程下,随机缺陷和参数变异成为主要挑战。其技术价值不仅在于降低单颗芯片成本,更能加速产品上市、保障可靠性,并成为企业技术实力的关键体现。应用场景贯穿智能手机、数据中心、自动驾驶和人工智能等所有高端芯片领域。本文将结合【芯片制造】与【良率

weixin_42526068的博客 632

Effective cpp 读书笔记3

资源管理 13.以对象管理资源 14. 在资源管理类中小心copying行为 15.在资源管理类中提供对原始资源的访问 16.成对使用new和delete时要采用相同形式 17.以独立语句将newed对象置入智能指针

GZGlenn的博客 547

Vue 10分钟入门VR全景显示 基于photo-sphere-viewer

文章目录前言一、引入photo-sphere-viewer?二、使用步骤1.引入库2.声明容器3.内容加载4.全部代码总结 前言 由于工作的需求,要实现全景图片的展示与预览,本来以为会是一个很难的内容,没想到使用现成的组件photo-sphere-viewer就可以轻松实现,上手只需要10分钟! 一、引入photo-sphere-viewer? 可以直接通过npm进行引入 npm install photo-sphere-viewer 二、使用步骤 1.引入库 photo-sphere-viewer

YIGE_MO的博客 5865

Ubuntu下OpenOCD+GDB的安装、编译及使用

目标开发板(芯片):stm32mp157aaa 仿真器:ST-Link 操作系统:Ubuntu 18.04 调试软件:OpenOCD OpenOCD的安装 首先下载OpenOCD有多种方式,可以GitHub上下载,目录下打开终端,输入 git clone git://git.code.sf.net/p/openocd/code openocd 下载完整的OpenOCD的文件夹。进入到OpenOCD的目录下,开始安装。 接着,OpenOCD适用于微处理器的debug和烧写,需要下载相关库 sud

蓝冰露的博客 9524

【Effective C++】阅读笔记3

Effective C++阅读笔记

gma999的博客 1254

频谱分析常见坑:STM32的ADC采样+FFT处理时如何避免这5个错误

本文深入剖析了在STM32平台上进行ADC采样与FFT频谱分析时,工程师最常遇到的五个关键错误与性能陷阱。内容涵盖从采样频率设置、频谱泄露处理、ADC配置优化,到谐波识别校准及系统实时性设计,提供了详尽的避坑指南与实战调优策略,旨在帮助开发者构建稳定、精确的嵌入式频谱分析或波形识别系统。

7up55的博客 623

Effective C++ 3nd 笔记——让自己习惯C++

《Effective C++ (第三版)》[美] Scott Meyers著;侯捷译

JallinRicher的博客 761

云计算 | 期末梳理(上)

2024云计算回忆版 && 复盘向梳理

知识库搭建ing 2231

SAP采购申请审批策略配置简介

SAP采购申请审批策略配置简介 1、CT04创建特征

我小时候很黑的博客 8159

Effective C++ 阅读笔记之Chapter3

前言 大家好,我是雨墨,我深知好记性不如烂笔头的道理,所以在阅读的时候都尽量写读书笔记,方便日后复习,当然笔记并不能代替书籍上的内容。希望我的笔记也能帮助到大家,如果我的笔记有什么问题,欢迎大家给小老弟纠错~ 条款十三总结 为了防止内存资源的泄漏,也就是防范还没到 delete 那一步的时候程序出现了异常,即当你申请使用 new 动态分配对象时,应该在获取资源的时候将其交给智能指针接管。这样就能保证不会出现内存泄漏的情况。 借此机会说一说 auto_ptr 和 unique_ptr 的区别,对于 a

qq_51387669的博客 347

什么是 SAP S/4HANA 的 Brown Field 迁移和 Green Field 迁移

Brown Field实施涉及升级现有的 SAP 环境并继续使用一些遗留组件。它类似于传统升级,因为它涉及软件更新、一些数据转换和一些业务流程的调整。它仍然具有破坏性,但比Green Field实施要少得多。如果你是风险厌恶者,倾向于逐步使用 S/4HANA 的功能,或担心 S/4HANA Green Field方法的成本,那么你可能更喜欢这种方法。混合方法结合了Brown Field和Green Field迁移的一些元素。它从公司的 SAP 系统的副本开始,包括配置设置和定制。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1322

《Effective C++》笔记汇总_思维导图 chap3

3.资源管理 下面是思维导图的截图,资源发在Github上了,需要的朋友自取 《Effective C++》chap3:资源管理 一些话儿 本人水平有限,如果笔记中有错误或是遗漏的地方,还请大家体谅。 这份笔记花了小生非常多的时间与精力,如果能帮到你对C++的学习,点个赞即可! ...

qq_43596544的博客 170

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【读书笔记】《Effective Modern C++》第3章 Moving to Modern C++

旧习惯private:仅在不定义函数时会在链接期报错,且误报位置不直观。现代做法public:建议对于不希望调用的函数,使用= delete,让编译器在编译期明确报错并指出源位置。

YZJincsdn的博客 1209

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Effective C++ 学习笔记3

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例

guerbuzhang的博客 769

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

effective C++读书笔记3

避免这类问题就是分离语句,将“创建的对象”与“放入智能指针对象”这两个步骤合成一步完成,而不是在函数调用中完成。

! 490

Effective C++笔记3

【条款19】分清成员函数,非成员函数和友元函数1.operator*运算符class rational {public:  ...  const rational operator*(const rational& rhs) const;};rational oneeighth(1, 8);rational onehalf(1, 2);rational result = onehalf * o

姚sir的话 341

effective C++ 阅读笔记 3

条款41 了解隐式接口和编译期多态 //显式接口:函数的签名式(函数名称、参数类型、返回类型)构成 class Widget{ public: Widget(); virtual ~Widget(); virtual std::size_t size() const; virtual void normalize(); void swap(Widget&...

jo_leb的博客 137

Effective C++学习笔记(3)

条款9: 避免隐藏标准形式的new    条款10: 如果写了operator new就要同时写operator delete缺省的operator new和operator delete具有非常好的通用性,它的这种灵活性也使得在某些特定的场合下,可以进一步改善它的性能。尤其在那些需要动态分配大量的但很小的对象的应用程序里缺省版本的operator new是一种通用型的内存分配器,在它所返回的内存

414

Effective C++笔记(3)—条款4分析

Effective C++ 条款04:确定对象被使用前已先被初始化:

上善若水 630

effective c++学习笔记3

条款05:了解c++默认编写并调用了那些函数 当你写下:class Empty(){};这行代码后,实际上编译器为你写好了如下代码: class Empty() { Empty(){}//default构造函数 Empty(const Empty& rhs){}//copy构造函数 ~Empty(){}//析构函数 Empty operator=(const Empty&

bhr2313122的博客 330

effective C++阅读笔记 3

24若所有参数都需要类型转换,此时要采用非成员函数 例如:有理数类 class rational{ int 分子 int 分母 rational result ,onehalf; result=2*onehalf;试图rational----->int result=onehalf*2;调用rational内部的operator* }; 办法:1-显示转换 result=rati

我的E家 717

Effective C++ 第3章笔记

资源管理类中的copying函数一般有两种类型 禁止复制(delete拷贝函数),对底层资源祭出“引用计数法”(对成员变量使用智能指针来管理),以及介绍了一下深拷贝问题和移动拷贝。动态分配数组可以使用vector和string或者看看Boost库中的boost::scoped_array和boost::shared_array classes。主要介绍RAII(资源获取即初始化),强调获得资源后应立即放入管理对象(例如智能指针),管理对象运用析构函数确保资源的释放。

kleincode的博客 140

effective c++读书笔记 条款3

#ifndef Clause3_H #define Clause3_H//条款3 尽可能使用const**//知识点1 将某些东西声明为const可以帮助编译器侦测出错误用法。 const可以被施加于任何作用域内的对象,函数参数,函数返回类型,成员函数本体。**//修饰指针时:char greeting[]="hello"; char *p=greeting; //non-const pointe

Peach_CodeRider的博客 533

Effective C++ 小笔记:条款3-6

Effective C++ 条款3 1、在一个函数声明式内,const可以和函数返回值、各参数、函数自身(如果是成员函数)产生关联。 2、许多人漠视一个事实:两个成员函数如果只是常量性(constness)不同,可以被重载。这实在是一个重要的C++特征。包括const修饰成员函数本身,或者成员函数的返回值。 3、const成员函数不可以更改对象内任何non-static成员变量...

weixin_34117522的博客 98
上一篇: setjmp和longjmp
下一篇: Effective C++ 笔记4
csc_csc_csc
博客等级 码龄15年 169粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值