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

燕郊网站开发介绍产品的营销推文

燕郊网站开发,介绍产品的营销推文,网站设计深圳,多用户b2c商城系统基础介绍 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://www.dtcms.com/wzjs/309397.html

相关文章:

  • 工信部官网查询系统查询手机广西seo公司
  • 网站推广方案设计网站seo优化方案项目策划书
  • 做酱菜网站百度网站入口链接
  • 找谁做网站比较好一个企业该如何进行网络营销
  • 八大电商平台是哪几家杭州seo俱乐部
  • 厦门专业网站设计网络推广是做什么的
  • 网站建设制作设计公司佛山经典seo伪原创
  • 攸县政府门户网站廊坊关键词排名优化
  • 免费版网站建设合同上海网络推广外包
  • 佛山专业的网站建设搜索引擎营销特点是什么
  • 可以自己做免费网站吗搜索网页内容
  • 郑州做网站多少钱淘宝大数据查询平台
  • 网站布局规划怎么写天津网站排名提升
  • 后台网站模板下载国外b站视频推广网站
  • 十大高端网站建设小红书推广价目表
  • 网站设计基本流程第一步百度网址大全旧版
  • 江门网站推广设计下载手机百度最新版
  • 网站建设杭州最便宜做一个个人网站
  • 哪些网站做推广好南京seo排名扣费
  • 制作网站设计作品广告公司排名
  • java可以做企业网站吗seoul是什么意思
  • 如何提高网站安全微信小程序开发一个多少钱啊
  • 开县做网站小程序模板
  • 湖南服装网站建设关键词有几种类型
  • 无锡网站开发公司电话网页推广怎么收取费用
  • 上海网页建站品牌推广
  • 个人域名可以做企业网站吗软文写作经验
  • 外贸网站seo博客重庆店铺整站优化
  • 触屏网站建设杭州关键词排名系统
  • 怎样建一个可以支付的网站市场调研数据网站