shared_ptrT make_shared( Args ... args );

shared_ptr很好地消除了显式的delete调用,如果读者掌握了它的用法,可以肯定delete将会在你的编程字典中彻底消失。
但这还不够,因为shared_ptr的构造还需要new调用,这导致了代码中的某种不对称性。虽然shared_ptr很好地包装了new表达式,但过多的显式new操作符也是个问题,它应该使用工厂模式来解决。
因此,shared_ptr在头文件<boost/make_shared.hpp> 中提供了一个自由工厂函数(位于boost名字空间)make_shared<T>(),来消除显式的new调用,它的名字模仿了标准库的 make_pair(),声明如下:
template<class T, class... Args> 
shared_ptr<T> make_shared( Args && ... args ); 
make_shared()函数可以接受最多10个参数,然后把它们传递给类型T的构造函数,创建一个shared_ptr<T>的对象并返回。make_shared()函数要比直接创建shared_ptr对象的方式快且高效,因为它内部仅分配一次内存,消除了shared_ptr 构造时的开销。
下面的代码示范了make_shared()函数的用法:
#include <boost/make_shared.hpp> 
int main()  
{  
shared_ptr<string> sp =  
make_shared<string>("make_shared");
//创建string的共享指针  
shared_ptr<vector<int> > spv =  
make_shared<vector<int> >(10, 2);      
//创建vector的共享指针  
assert(spv->size() == 10);  
make_shared()不能接受任意多数量的参数构造对象,一般情况下这不会成为问题。实际上,很少有如此多的参数的函数.

转载于:https://www.cnblogs.com/androidme/archive/2013/02/03/2890861.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android jdwp 自动断开,开启debug调试模式,进入不了,等一会就闪退了!!!!

原因&#xff1a;debug标记加多了art/runtime/jdwp/jdwp_event.cc:661] Check failed: Thread::Current() ! GetDebugThread() (Thread::Current()0xe1908400, GetDebugThread()0xe1908400) Expected event thread11-16 15:29:18.457 10331-10339/包名 A/art: art/runtime/runt…

Visual Studio 2022发布了,我最爱的5大特性

VS2022今天Visual Studio 2022 终于发布了&#xff0c;你只需要按下⾯地址就可以快速安装你所需要的Visual Studio 2022版本&#xff0c;包括了企业版本&#xff0c;专业版本&#xff0c;以及社区版本。请输入以下⽹址安装最新的Visual Studio 2022 https://aka.ms/InstallVS或…

ASP.NET3.5 企业级项目开发 -- 第二章 数据访问层(DAL)的开发

为什么80%的码农都做不了架构师&#xff1f;>>> ASP.NET3.5 企业级项目开发 &#xff0d;&#xff0d; 第二章 数据访问层(DAL)的开发 前言&#xff1a;本篇主要讲述数据访问层的开发&#xff0c;而且为了大家交流&#xff0c;已经创建企业项目开发团队&…

Android之URI简介

就Android平台而言&#xff0c;URI主要分三个部分&#xff1a;scheme, authority and path。其中authority又分为host和port。格式如下&#xff1a; scheme://host:port/path 举个实际的例子&#xff1a; content://com.example.project:200/folder/subfolder/etc \---------/ …

虚拟机安装和使用

软件更新快&#xff0c;所以我也不知道什么时候这些密钥啊就失效了&#xff0c;最新应用的安装时间&#xff1a;15年 虚拟机软件不少&#xff0c;其中应用最广发的一个就是VMware Workstation&#xff0c;以后用了别的虚拟机&#xff0c;安装教程再加~ VMware Workstation http…

十个jQuery的幻灯片图片轮播切换插件[转]

1、Simple Controls Gallery 是基于jQuery的一个幻灯插件&#xff0c;非常不错&#xff0c;详细演示及下载请点击下面的链接http://www.dynamicdrive.com/dynamicindex4/simplegallery.htm 2、jQuery Cycle Plugin 同样是jQuery的插件&#xff0c;支持非常多的样式&#xff0c;…

22张图片倒叙霍金:我爱宇宙也爱这苦乐人生

全世界只有3.14 % 的人关注了爆炸吧知识▲斯蒂芬威廉霍金&#xff08;Stephen William Hawking&#xff09;&#xff0c;1942年1月8日出生于英国牛津&#xff0c;21岁时患上肌肉萎缩性侧索硬化症&#xff08;卢伽雷氏症&#xff09;&#xff0c;全身瘫痪&#xff0c;不能言语&a…

鸿蒙思维和小央美,北市场附近艺术培训

最佳答案&#xff1a;北市场附近有叮当少儿美术空间,弈趣围棋培训中心,舞王回一街舞俱乐部,童心童画美术馆,小央美儿童美术,纸飞机少儿美术,星海艺术培训,鸿蒙教育思维绘画,小画虫少儿美术培训中心,红点美术培训中心,风之舞打击乐培训中心,红英艺术中心,墨涛书法教育,格林童画,…

简述LINQ的发展历程

LINQ&#xff1a;最终统治了所有的语言&#xff01;让我们看看LINQ如何彻底改变了.NET中访问数据的方式.NET与其他技术栈的不同之处之一绝对是LINQ&#xff0c;它是Language Integrated Query的首字母缩写。实际上&#xff0c;它是随.NET Framework 3.5和Visual Studio 2008引入…

关于异或的一些东西和应用

异或是一种基于二进制的位运算&#xff0c;用符号XOR或者 ^ 表示&#xff0c;其运算法则是对运算符两侧数的每一个二进制位&#xff0c;同值取0&#xff0c;异值取1。它与布尔运算的区别在于&#xff0c;当运算符两侧均为1时&#xff0c;布尔运算的结果为1&#xff0c;异或运算…

Android之自定义ContentProvider详解

第一个版本 对android中MIME类型的理解 初始MIME类型&#xff0c;是在学习ContentProvider的时候。 当在创建自己的ContentProvider的时&#xff0c;需要从抽象类ContentProvider中派生出自己的子类&#xff0c;并实现其中5个抽象方法&#xff1a; query(Uri, String[], Strin…

dwr 写的小程序,配置

第一、在web.xml里面有如下配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?><web-app xmlns"http://java.sun.com/xml/ns/j2ee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"h…

PHP开发学习-Apache+PHP+MySQL环境搭建

我现在开始php的学习之旅啦&#xff01; 入门&#xff1a;开发环境搭建 组件版本&#xff1a; apache2.2.22 下载地址&#xff1a;http://httpd.apache.org/ php5.4.11 下载地址&#xff1a;http://windows.php.net/download/ mysql5.5.29 下载地址&#xff1a;http://www.mys…

如何不露声色地知道别人是不是单身?

1 世界上竟然会有这么香的东西&#xff01;&#xff01;&#xff01;2 全网吧的电脑都死机了&#xff0c;唯独写论文的电脑没死机&#xff01;3 哈哈哈哈哈哈哈哈哈哈哈好拉风啊&#xff01;&#xff01;4 中国好邻居5 《秋游》&#xff0c;五年级男生写的诗图自我们1班王悦微6…

Android 防火墙 知乎,知乎回应:防火墙太“坑爹” 正检查用户隐私是否有泄露...

9月7日消息&#xff0c;知乎今日下午系统瘫痪无法登陆&#xff0c;各个页面变为一片空白&#xff0c;并且还出现了知乎账号“串号”现象&#xff0c;当时有消息称是服务器原因。其后知乎发布公告&#xff0c;声称由第三方防火墙故障引起客户端临时下线&#xff0c;并引起数据展…

再谈C#中的委托和事件

写在最前我相信全网关于委托和事件的文章和概述&#xff0c;大家应该已经读过很多篇。但是就我的观察来看&#xff0c;大多数文在讲述这方面概念时&#xff0c;都会用烧开水和狗叫主人的例子来讲述事件怎么工作&#xff0c;这样比喻固然与生活联系紧密&#xff0c;但看多了难免…

MIT Scheme 使用 Edwin

MIT Scheme 的基本使用&#xff1a;http://www.math.pku.edu.cn/teachers/qiuzy/progtech/scheme/mit_scheme.htm 安装过程 安装brew XQuartz 转载于:https://www.cnblogs.com/IDRI/p/4989171.html

js.domReady

2019独角兽企业重金招聘Python工程师标准>>> var dom [], dom_isReady false, domReady function (a) { if (dom_isReady) a(); else dom.push(a) }, dom_fireReady function () { if (!dom_isReady) { if (!document.body) return setTimeout(dom_fireReady, 1…

mongo-rename操作

重命名集合 > show collectionstianyc_test9> db.runCommand({renameCollection:Gps.tianyc_test9, to:Gps.tianyc_test99}){ "ok" : 1 }> show collectionstianyc_test99 另&#xff1a;通过db.listCommands()&#xff0c;可以查看到所有mongo的命令。转载…

Android之监测database的改变--notifyChange

我们在ContentProvider的insert,update,delete等改变之后调用getContext().getContentResolver().notifyChange(uri, null);这样就通知那些监测databases变化的observer了&#xff0c;而你的observer可以在一个service里面注册。 以Downloadmanger为例子&#xff1a; 定义Cont…