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

网站如何引导客户sem是什么牌子

网站如何引导客户,sem是什么牌子,网站用户群,今日头条新闻10条简短基础介绍 虽然在c11版本std::unique_ptr<T>已经引入&#xff0c;但是在c14版本引入之前&#xff0c;std::unique_ptr<T>的创建还是通过new操作符来完成的。在c14版本已经引入了类似make_shared的std::make_unique&#xff0c;目的是提供更加安全的方法创建std::un…

基础介绍

虽然在c++11版本std::unique_ptr<T>已经引入,但是在c++14版本引入之前,std::unique_ptr<T>的创建还是通过new操作符来完成的。在c++14版本已经引入了类似make_shared的std::make_unique,目的是提供更加安全的方法创建std::unique_ptr<T>,防止产生资源泄露等问题。

为什么要引入std::make_unique<T>?

首先请看下面这句话:

std::make_unique is the recommended way to create instances of std::unique_ptrs due to the following reasons:

  • Avoid having to use the new operator.

       避免使用new操作符

  • Prevents code repetition when specifying the underlying type the pointer shall hold.

        避免类型重复,结合auto关键字可以使用类型推导

  • Most importantly, it provides exception-safety. 

        最重要的是,它提供了异常安全

 下面我们着重分析一下第2点和第3点,先说第二点,避免代码重复(code repetition),应该按下面的方式理解:

//不使用std::make_unique
// 需要重复写类型名
std::unique_ptr<std::vector<std::string>> ptr(new std::vector<std::string>());// 模板类中更麻烦
template<typename T>
class Container {std::unique_ptr<std::vector<T>> data(new std::vector<T>());
};//使用std::make_unique
// 类型推导,无需重复
auto ptr = std::make_unique<std::vector<std::string>>();// 模板类中更简洁
template<typename T>
class Container {auto data = std::make_unique<std::vector<T>>();
};

现在分析最重要的第3点,即为什么std::make_unique可以提供异常安全。看下面的例子:

foo(std::unique_ptr<T>{new T{}}, function_that_throws(), std::unique_ptr<T>{new T{}});

上例中foo函数为什么不安全呢?原因是编译器并不会规定参数求值的执行顺序,那么可能是顺序是:

  1. 执行new T(参数一)
  2. 执行new T (参数二)
  3. 执行function_that_throws() --抛出异常
  4. 构造std::unique_ptr<T> 参数一
  5. 构造std::unique_ptr<T> 参数二

我们知道std::unique_ptr<T>自身可以管理资源,当std::unique_ptr<T>对象出了其作用后会自动释放资源,但是如果在第3步的时候,抛出了异常,导致后面的std::unique_ptr<T>对象未创建成功,则会导致内存泄露。

而使用std::make_unique<T>方式创建对象,如下所示:

foo(std::make_unique<T>(), function_that_throws(), std::make_unique<T>());

std::make_unique可以保证参数一创建完成,即生成std::unique_ptr<T>后再执行后面的操作,此时由于std::unique_str<T>对象已经生成,即使后续抛出异常,那么这块内存也会得到释放。

http://www.dinnco.com/news/68565.html

相关文章:

  • app制作开发软件广东网络优化推广
  • 如何向百度提交自己的网站开一个网站需要多少钱
  • 合肥做网站优化网站优化关键词排名公司
  • 如何做网站的滚动图片上海正规seo公司
  • 做淘宝电商比较厉害的网站郑州seo优化顾问阿亮
  • 网站信息化建设具体内容百度指数app
  • 武夷山网站建设网站排名优化系统
  • 小程序模板免费网站重庆seo扣费
  • 河南安阳殷都区今天疫情消息系统优化的意义
  • ai可以做网站吗网络推广电话销售技巧和话术
  • 呼和浩特市做网站公司好的电商网站建设 网站定制开发
  • 哈尔滨站建好了吗百度软件中心
  • 个人网站如何加入百度联盟seo搜索引擎的优化
  • 网站建设 策划国内重大新闻
  • wordpress网站做成小程序seo引擎优化专员
  • 江津区城乡建设委员会网站济宁网站建设
  • 西安网站建设定制郑州网站优化顾问
  • 网站建设与网页设计总结网络营销案例分析题
  • 在搜狐快站上做网站怎么跳转seo优化网站推广全域营销获客公司
  • 陕西免费做网站公司软文写作案例
  • 网站中的滚动字幕怎么做长春百度网站快速排名
  • 设计平台网站如何制作自己的网站教程
  • 微分销商城网站建设深圳网络推广推荐
  • 谷歌浏览器怎么关闭2345网址导航邯郸seo推广
  • 民权网站建设培训班学员培训心得
  • 免费上外国网站的浏览器东莞疫情最新消息今天新增
  • 广州品牌设计网站建设网站注册免费
  • wordpress 图库主题关键词优化排名用哪个软件比较好
  • 网站开发的大学生应届简历网络营销的效果是什么
  • 网站需备案吗女儿考试没圈关键词