首页 > 编程语言 >Effective C++ - 条款13 - 以对象管理资源

Effective C++ - 条款13 - 以对象管理资源

时间:2022-11-05 18:57:04浏览次数:45  
标签:13 Effective 管理 对象 auto C++ 智能 ptr 指针

  1. 直接使用指针管理对象并不安全,因为 可能忘记delete指针/delete语句并未按照预期执行而提前被exception中断了程序 etc
  2. RAII观念:资源取得时机便是初始化时机. 例如使用工厂函数返回的对象来初始化std::auto_ptr(可以视为管理者)这玩意儿现在都不用了,很落后了。因为被拷贝后原auto_ptr被置空,再调用析构就危险了
  3. 管理对象(auto_ptr)通过析构函数来确保对象被释放了
  4. RCSP 是一种智慧型引用计数指针也是一个老玩意儿了,虽然避免了2所说的auto_ptr问题,但仍存在部分问题
  5. c++11之后就开始用智能指针了。就把这些智能指针当作管理对象就行了,让这些智能指针来管理产生的对象(资源),然后这些智能指针会自动做释放。

标签:13,Effective,管理,对象,auto,C++,智能,ptr,指针
From: https://www.cnblogs.com/ijpq/p/16860834.html

相关文章

  • Windows 下用 MinGW-64 配置 VScode 的 C/C++ 环境
    蒟蒻第一次发博客,轻喷~我在安装VScode的时候可谓历经磨难,所以就萌生出写这篇文章的想法。Windows下用MinGW-64配置VScode的C/C++环境一、下载MinGW-w64并添......
  • 三级指针动态分配/释放内存(C / C++)
    C语言版本#include<stdio.h>#include<stdlib.h>#definehigh2#definerow3#definecol4intmain(){inti,j,k;//p[2][3][4]int......
  • C++生成DLL给C#调用
    1、添加C++动态链接库(DLL)2、添加头文件test.h#ifndefTEST_H#defineTEST_H//添加要在此处预编译的标头#include"framework.h"#endif//TEST_Hextern"C"_......
  • C++——优先级队列(priority_queue)
    其为队列需要包含头文件#include,其与queue的不同之处在于,可以自定义数据的优先级,让优先级高的排在队列的前面,优先出队;优先队列具有队列的所有特性,包括基本操作,只是在此基......
  • MacOS13系统升级动态壁纸无法安装解决方法
    MacOS13系统升级,导致网站上的壁纸无法双击安装,怎么办?这里小编为大家带来了解决方法,一起来看看!网站上下载的壁纸安装包打开,双击安装没有反应键盘上按住shiftcommand.三个键,找......
  • Project facet Java version 13 is not supported.
    问题导入的文件运行时出现报错:ProjectfacetJavaversion13isnotsupported.大概就是版本不支持,看了下自己的Java版本是1.8的,修改下版本即可运行解决右击文件目录......
  • 初步认识c++之命名空间详解(千字长文带你刨析你命名空间的细节)
    初识c++之命名空间详解前言:c++是在c语言的基础上进一步发展出来的用于弥补c语言缺陷的语言,是c语言的超集,添加了很多新的特性,使其编程更加方便!下面就让我们开始初步认识c++......
  • 13第五章:【01】单例模式
    一、单例设计模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只能提供一个取得其对象实例的方法(静态方法)。......
  • 2022-2023-1 20201324《信息安全系统设计与实现(上)》第12章
    1块设备I/O缓冲区文件系统使用一系列I/O缓冲区作为块设备的缓存内存。当进程试图读取(dev,blk)标识的磁盘块时,它首先在缓冲区缓存中搜索分配给磁盘块的缓冲区。如果该缓......
  • miui13更新无法显示运行中程序/运行app处理方案
     一、背景手机更新到13.0.09或是更高版本后,系统内置应用也会升级更新。我的手机更新到13.0.14上后,手机管家(安全中心)也升级到了6.3.30版本,使用后发现无法显示......