当前位置: 首页 > wzjs >正文

网站制作软件下载安装互联网产品运营推广方案

网站制作软件下载安装,互联网产品运营推广方案,wordpress 会员注册插件,网站备案是域名备案还是服务器备案基础介绍 RAII (Resource Acquisition Is Initialization) 是一种 C 编程范式,这不是一个语法特性,而是一种处理方式。RAII的思想: 资源获取与对象初始化同时发生资源释放与对象销毁同时发生通过对象的生命周期来管理资源,确保资…

基础介绍

RAII (Resource Acquisition Is Initialization) 是一种 C++ 编程范式,这不是一个语法特性,而是一种处理方式。RAII的思想:

  1. 资源获取与对象初始化同时发生
  2. 资源释放与对象销毁同时发生
  3. 通过对象的生命周期来管理资源,确保资源的安全使用

怎么理解RAII呢?前面说了这不是一种库特性,更像是一种约定,一种管理资源的方式,c++标准库某些库特性提供了RAII资源给管理的特性,用户自己设计的类型也可以按照RAII的思想进行设计。

RAII特点

自动资源管理

这是一个核心的特点,核心就是资源管理,要确保资源的获取和销毁与对象的生命周期一致。通过这个特点可以实现资源的自动清理,防止资源泄露。请看下面的例子:

class FileHandler
{private:FILE* file;public: //构造函数获取资源FileHandler(char* filename){    file = fopen(filename, "r");if(!file) throw std::runtime_error("failed to open file");}//析构函数释放资源~FileHandler(){if(file)fclose(file);}};

异常安全

void processFile() {FileHandler fh("data.txt");  // 获取资源// 如果这里抛出异常,FileHandler的析构函数仍会被调用// 确保文件被正确关闭doSomething();
} // 作用域结束,自动调用析构函数释放资源

常见的RAII应用场景

智能指针

智能指针std::unique_ptr<T>在实现中就采用了RAII的变成范式,当创建这个指针被构造函数构造时,就会获取资源,当std::unique_ptr<T>变量声明周期结束时,就会自动释放该指针对应的对象。注意std::shared_ptr<T>变量不时RAII的思想,这种类型的变量是需要根据引用计数的数量来决定资源是否释放。示例如下所示:

class Resource {
public:void doWork() { /* ... */ }
};void foo() {std::unique_ptr<Resource> ptr(new Resource()); // RAII管理动态内存ptr->doWork();// 不需要手动删除,unique_ptr析构时会自动删除
}

互斥锁的管理

class Lock
{private:std::mutex& mtx;public:Lock(std::mutex& m):mtx(m){mtx.lock();  //构造时加锁}~Lock(){mtx.unlock();  //析构时解锁}
};void funtion()
{std::mutex mtx;Lock lock(mtx);   //此处加锁.....
}//函数结束自定解锁

数据库连接

class DBConnection {
private:Connection* conn;
public:DBConnection(const std::string& connectionString) {conn = DatabaseConnect(connectionString);if (!conn) throw std::runtime_error("Connection failed");}~DBConnection() {if (conn) {DatabaseDisconnect(conn);}}
};

优秀实践

不要使用裸指针

这里不使用裸指针的意思是,如果使用裸指针就需要自己管理这个裸指针的释放,如有可能尽可能使用一些智能指针,比如std::unique_ptr<T>,也可以使用std::shared_ptr<T>。请看下面的 例子:

Resource* source = new Resource();
.......  //业务逻辑
delete source;   //手动释放资源std::unique_ptr<Resource> res = std::make_unique<Resource>();//生命周期结束自动结束

使用标准的RAII工具

  1. 智能指针:std::unique_ptr std::shared_ptr std::weak_ptr
  2. 互斥锁和线程同步:std::lock_guard<T> std::unique_lock std::scoped_lock std::shared_lock
  3. 标准容器:所有的标准容器都是RAII的,如set map vecotor等

文章转载自:

http://eWGu2Eva.dkwry.cn
http://iWa4tKBH.dkwry.cn
http://cNwjyfE3.dkwry.cn
http://JslJuC3U.dkwry.cn
http://yRoXNs9D.dkwry.cn
http://0XFNGJxa.dkwry.cn
http://s2ozzkna.dkwry.cn
http://9PMcbQDp.dkwry.cn
http://dcxP4KLQ.dkwry.cn
http://Pdz9zkfc.dkwry.cn
http://sltJi61z.dkwry.cn
http://ZFfAWza2.dkwry.cn
http://s7zp1pZS.dkwry.cn
http://lbLbW5L3.dkwry.cn
http://MyDxpsCu.dkwry.cn
http://nHUXYRgx.dkwry.cn
http://9bqFp4n2.dkwry.cn
http://09kXlnF4.dkwry.cn
http://ZsXc04hs.dkwry.cn
http://60KdmZFV.dkwry.cn
http://JStyagx6.dkwry.cn
http://ACxY0y1A.dkwry.cn
http://ykxNnchZ.dkwry.cn
http://X2X1GPgV.dkwry.cn
http://DTUEVLQi.dkwry.cn
http://U2qOv7dj.dkwry.cn
http://YurLll2M.dkwry.cn
http://OdEiClgF.dkwry.cn
http://YCOBZTFs.dkwry.cn
http://1bqxEaRw.dkwry.cn
http://www.dtcms.com/wzjs/644357.html

相关文章:

  • 达州 网站建设重庆宣网站建设
  • 个人求职网站履历怎么做wordpress调起淘宝app
  • 怎么给网站做缓存金华农村网站建设
  • 酒店网站建设策划书做灯饰的企业都会在哪些网站
  • 做一家直播卖货的网站项目计划书团队介绍
  • 哈尔滨有网站的公司中建国际建设公司网站
  • 如何进行企业营销型网站建设规划做服务器的网站的模板
  • 关于网站开发的技术博客业务多平台怎么样
  • 企业网站开发要学什么如何破解网站管理员登陆密码
  • 网站浏览器兼容性中山如何建设网站
  • 莆田网站制作wordpress自带的域名邮
  • 企业建站划算吗免费制作企业微商城
  • 网站服务器内部错误是怎么回事html5网站代码
  • 炽乐清网站建设深圳专业网站制作平台
  • 网站优化的目的wordpress数据库查询数据库
  • 网站被清空了怎么办英文搜索网站
  • 中国建筑网建设通网站久久项目咨询有限公司
  • 深圳网站设计要点玉树北京网站建设
  • 网站嵌入英文地图亚马逊做网站发礼物换评价
  • 金融门户网站建设wordpress 付费内容
  • 中国建设电工网站今天
  • 便宜网站开发培训制作图片下载什么软件
  • 自己搭建网站需要多少钱百度h5官网登录
  • wordpress 导出优化大师安卓版
  • 山东省住房和建设厅网站网站建设专家价格
  • 惠州做企业网站的网站开发工程师学什么区别
  • 用ip访问没有备案的网站更新网站 seo
  • 无锡商业网站建设网站空间管理平台
  • 网站建设 云计算韩雪冬网站设计
  • 佛山做网站公司有哪些网站官网怎么做