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

电子商务物流网站建设seo平台是什么

电子商务物流网站建设,seo平台是什么,广告在线制作图片,千万不要打开开发者选项12.1.3 shared_ptr 和 new 结合使用 如上文所述#xff0c;如果我们不初始化一个智能指针#xff0c;那么它将会被初始化为一个空指针#xff08;需要注意的是#xff0c;智能指针与普通指针在此处有着非常明显的区别。如果只声明某个类型的普通指针#xff0c;而不对它进…12.1.3 shared_ptr 和 new 结合使用 如上文所述如果我们不初始化一个智能指针那么它将会被初始化为一个空指针需要注意的是智能指针与普通指针在此处有着非常明显的区别。如果只声明某个类型的普通指针而不对它进行初始化那么这将会是危险的因为不经初始化的普通指针是空悬指针它所指向的地址是未知的。而不经初始化的智能指针是一个空指针它是安全的。还可以用 new 返回的指针来初始化智能指针 shared_ptrdouble p1; // shared_ptr 可以指向一个 double shared_ptrint p2(new int(42)); // p2 指向一个值为 42 的 int接受指针参数的智能指针构造函数是 explicit 的。因此不能将一个内置隐式指针转换为一个智能指针必须使用直接初始化形式来初始化一个普通指针 shared_ptrint p1 new int(1024); // 错误❌: 必须使用直接初始化形式 shared_ptrint p2(new int(1024)); // 正确: 使用了直接初始化形式p1 的初始化隐式地要求编译器用一个 new 返回的 int* 来创建一个 shared_ptr。由于我们不能进行内置指针到智能指针的隐式转换因此这条初始化语句是错误的。出于相同的原因一个返回 shared_ptr 的函数不能在其返回语句中隐式转换一个普通指针 shared_ptrint clone(int p) {return new int(p); // 错误❌: 隐式转换为 shared_ptrint }这一部分很好理解C 智能指针的规则就是不能将普通指针隐式地转换为智能指针由于 new 的返回值是某个类型的普通指针普通指针不能隐式转为智能指针因此使用 new … 对智能指针进行赋值是非法的 我们必须将 shared_ptr 显式绑定到一个想要返回的指针上 shared_ptrint clone(int p) {return shared_ptrint(new int(p)); // 正确: 显式地使用 int* 来创建 shared_ptrint }默认情况下一个用来初始化智能指针的普通指针必须指向动态内存因为智能指针默认使用 delete 释放它所关联的对象。 可以将智能指针绑定到一个指向其它类型的资源的指针上但是为了这样做我们必须提供自己的操作来替代 delete。 不要混合使用普通指针和智能指针 … … shared_ptr 可以协调对象的析构但这仅限于其自身的拷贝也是 shared_ptr之间。这也是 C Primer 推荐使用 make_shared 而不是 new 的原因。 这样我们就可以在分配对象的同时将 shared_ptr 与之绑定从而避免了无意中将同一块内存绑定到多个独立创建的 shared_ptr 上。 考虑下面对 shared_ptr 进行操作的函数 // 在函数调用时 shared_ptr 被创建并初始化 void process(shared_ptrint ptr) {// 使用 ptr } // ptr 离开作用域, 被销毁process 的参数是传值方式调用的因此实参会被拷贝到 ptr 中。拷贝一个 shared_ptr 会递增其引用计数因此在 process 运行过程中引用计数值至少为 2。当 process 结束时ptr 的引用计数递减但不会变为 0。因此当局部变量 ptr 被销毁时ptr 指向的内存不会被释放。 使用此函数的正确方法是传递给它一个 shared_ptr shared_ptrint p(new int(42)); // 引用计数为 1 process(p); // 拷贝 p 会递增它的引用计数; 在 process 中引用计数值为 2 int i *p; // 正确: 引用计数值为 1虽然不能传递给 process 一个内置指针但可以传递给它一个临时的shared_ptr这个 shared_ptr 是用一个内置指针显式构造的。但这样做可能会导致错误 int *x(new int(1024)); // 危险: x 是一个普通指针, 不是一个智能指针; process(x); // 错误❌: 不能将 int* 转换为一个 shared_ptrint; process(shared_ptrint(x)); // 合法的, 但内存会被释放; int j *x; // 未定义的, x 是一个空悬指针;在上面的调用中第一行建立一个指向动态内存的 x 指针它是一个 int 类型的指针指向的值为 1024并且它是一个普通指针。第二行是非法的因为 shared_ptr 和 普通指针之间没有隐式转换。第三行是正确的因为第三行的实参中显式地将普通指针转为智能指针但是智能指针所指向的地址会在函数调用结束时被释放。因此第四行是危险的因为 x 所指向的内存已经被释放被释放的过程在 C Primer 当中的解释不是很详尽我的理解是这样的当第三行对 process 进行调用时x 被显式地转换为智能指针指向 x 所指地址的引用计数被置为 1。当函数调用结束时x 所指地址的引用计数被置为 0该部分的内存随之被释放。此时由于函数调用外的 x 是一个普通指针它所指向的地址仍然是最初的地址而最初地址的内存在 process 函数调用后被释放所以此时 x 指向的地址被释放x 变为一个危险的空悬指针。 当将一个 shared_ptr 绑定到一个普通指针时我们就将内存的管理责任交给了这个 shared_ptr。一旦这样做了我们就不能再使用内置指针来访问 shared_ptr 所指向的内存了。 使用一个内置指针来访问一个智能指针所负责的对象是很危险的因为我们无法知道对象何时被销毁。 … … 也不要使用 get 初始化另一个智能指针或为智能指针赋值 智能指针类型定义了一个名为 get 的函数它返回一个内置指针指向智能指针关联的对象。此函数是为了这样一种情况而设计的我们需要向一个不能使用智能指针的代码传递一个内置指针。使用 get 返回的指针的代码不能 delete 此指针。 虽然编译器不会给出错误信息但将另一个智能指针也绑定到 get 返回的指针上是错误的 shared_ptrint p(new int(42)); // 引用计数为 1 int *q p.get(); // 正确: 但使用 q 时要注意, 不要让它管理的指针被释放 { // 新程序块shared_ptrint(q); // 未定义: 两个独立的 shared_ptr 指向相同的内存 } // 程序块结束, q 被销毁, 它指向的内存被释放 int foo *p; // 未定义: p 指向的内存已经被释放;在本例中p 和 q 指向相同的内存。由于它们是相互独立创建的因此各自的引用计数都是 1。当 q 所在的程序块结束时q 被销毁这会导致 q 指向的内存被释放。从而 p 变成一个空悬指针。 get 用来将指针的访问权限传递给代码你只有在确定代码不会 delete 指针的情况下才能使用 get。 其它 shared_ptr 操作 shared_ptr 还定义了一些其它操作。可以用 reset 来将一个新的指针赋予一个 shared_ptr p new int(1024); // 错误❌: 不能将一个指针赋予 shared_ptr p.reset(new int(1024)); // 正确: p 指向一个新对象与赋值类似reset 会更新引用计数如果需要的话会释放 p 指向的对象。reset 成员常与 unique 一起使用来控制多个 shared_ptr 共享的对象。
http://www.dnsts.com.cn/news/227751.html

相关文章:

  • 莆田网站 建设聊城网站建设设计实力公司
  • 婚纱摄影网站设计论文北京朝阳区房子多少钱一平米
  • 阜阳哪里做网站的多wordpress升级中文版
  • 资深做网站公司定制app开发的流程
  • 企业网站策划流程如何制作自己想要的图片
  • 网站建设过程中需要注意的通用原则网页设计培训班学校排名
  • 建设一个公司网站需要多少钱网站服务器的作用和功能有哪些
  • 西安mg动画制作网站建设搭建网站平台有前途吗
  • 郑州市城乡建设厅网站下载asp做网站
  • 西宁专业做网站公司给网站做伪静态
  • 网站建设推广襄樊做网页推广有哪些公司
  • 莞城网站推广个人网站制作的步骤
  • 室内装修网站泗阳县建设局网站
  • 什么网站可以做投票福州制作网站软件
  • 可信网站认证查询营口手机网站建设
  • 厦门网站建设首选厦门一联网络app推广软件
  • 厚街网站建设价格如何查询网站后台地址
  • tp5.1做的网站招聘海报制作软件app免费
  • 宝格丽网站建设策划案网架公司名字
  • 做虚假网站犯法吗免费素材网站图库
  • 微网站方案怎么写wordpress显示股价
  • 可以建设网站的软件古风ppt模板
  • 网站做cpa赚钱免费下ppt课件的网站
  • 杭州做网站套餐重庆网站建设aiyom
  • 海南汽车网站建设WordPress创建简码
  • 商务网站平台建设预算企业网站备案建设方案策划书
  • 网站怎么申请怎么注册seo 培训教程
  • 南阳市建设局网站东莞网站建设php方案
  • 亚马逊没有网站怎么做seo广州南站在哪个区
  • 做网站是怎么赚钱xml的文档打开乱码程序打开