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

怎么做老虎机网站的/网站建设平台哪家好

怎么做老虎机网站的,网站建设平台哪家好,青岛做门户网站的有哪些,好资源源码网站基本分类 在C中智能指针有四种,分别是auto_ptr,shared_ptr,unique_ptr,weak_ptr。其中auto_ptr已经被舍弃,不在累述。大约可以分为两类: 一种是独占式拥有,即同一时间内只有一个智能指针可以指向该对象。但是你可以移交拥有权&a…

基本分类

在C++中智能指针有四种,分别是auto_ptr,shared_ptr,unique_ptr,weak_ptr。其中auto_ptr已经被舍弃,不在累述。大约可以分为两类:

  • 一种是独占式拥有,即同一时间内只有一个智能指针可以指向该对象。但是你可以移交拥有权,它对于避免资源泄露,例如“以new创建对象后因为异常发生而忘记调用delete,特别有用”。
  • 二是共享式拥有,多个智能指针可以指向相同对象,该对象会在最后一个reference被销毁时,被释放,即计数器为0时。问了能在结构较复杂的情境下工作,标准库提供了weak-普通人,bad_weak_ptr,enable_shared_from_this等辅助类。

头文件
所有智能指针的头文件都是

unique_ptr

unique_ptr 是为了保证在异常情况下析构函数被成功调用。字面上的意思就是unique_ptr是“其所指对象”的唯一拥有者。使用unique_ptr的充要条件就是他所指的对象只有一个拥有着。

 #include <string>
#include <iostream>
#include <memory>
#include <cassert>
using namespace std;
class Object
{
public:Object(int a):m_a(a){cout << "构造函数被调用" << endl;}~Object(){cout << "析构函数被调用" << endl;}Object(const Object&& rhs){cout << "移动构造函数被调用" << endl;}void say(){cout << "say" << m_a << endl;}int m_a;
};
typedef std::unique_ptr<Object> UniqueObjectPtr;
void print(const UniqueObjectPtr& rhs) { cout << "print" << endl; }
void transfer(UniqueObjectPtr obj) {//一旦调用该函数,如果该函数不在转移拥有权,对象会在函数结束时delete调cout << "transfer" << obj->m_a << endl; }
UniqueObjectPtr source(UniqueObjectPtr obj)
{cout << "source" << endl;return obj; // 不在需要调用std::move,此处已将权限返回,是因为语言的规定
}
int main()
{//UniqueObjectPtr up = new Object; 无法编译成功,因为必须直接初始化UniqueObjectPtr up(new Object(5));//直接初始化/*auto p = up.get(); //返回被存储的point的地址if (nullptr == p){return -1;}*/if (up){cout << "智能指针存在" << endl;}//print(up);up->say();//UniqueObjectPtr up1 = up; //同时只能有一个拥有该对象UniqueObjectPtr up1(std::move(up));//使用std::move移交对象的所有权up1->say();//transfer(up1);//同时只能有一个拥有该对象,无法编译成功,有临时对象obj//transfer(std::move(up1));//需要将管理权移交给临时对象obj,up1会被置NULL//cout << up1->m_a << endl; 在std::move(up1)移交之后,在此调用时,会导致程序崩溃//assert(NULL == up1);UniqueObjectPtr up2(std::move(source(std::move(up1))));std::shared_ptr<Object> sh(std::move(up2)); //将控制权移交给shaed_ptr管理,up1会被置NULlassert(NULL == up1);
};

当定义一个array数组时,或者需要定义自定义删除,如需要关闭文件描述符或者关闭句柄时,需要重写自己的Deleter,可以借用lambda,模式如下std::unique_ptr<T,void()(T)>;

#include <string>
#include <iostream>
#include <memory>
using namespace std;int main()
{//模板为std::unique_ptr<T,void(*)(T*)>;std::unique_ptr<int, void(*)(int*)> up(new int[10], [](int*p){cout << "析构函数被调用 "<< endl;delete[] p; });
};
http://www.lbrq.cn/news/749683.html

相关文章:

  • 网站设计的机构/精准引流推广团队
  • 搭建网页教程/谷歌广告优化师
  • 商家产品展示网站源码/品牌营销策略论文
  • 长沙网站创建/seo公司运营
  • 手工迷你饮水机/天津网站优化
  • 做网站定位/百度大搜数据多少钱一条
  • 免费制作一个自己的网站/最新的疫情最新消息
  • 网站悬浮窗/0元入驻的电商平台
  • 有用vue做企业网站的/上海专业排名优化公司
  • 温州微网站制作电话/广告公司职位
  • 北京建站设计/投稿网站
  • 做自动发卡密网站的教程/怎样申请自己的电商平台
  • 自己做网站卖机器设备/媒体软文发稿
  • 钱网站制作/做网站哪家公司比较好而且不贵
  • 怎样切换到经典编辑器wordpress/seo网站排名推广
  • 网站开发页面布局/网页设计制作软件
  • 武汉网站建设报价明细表/西安网站seo价格
  • 做图神器的网站/惠州seo建站
  • 著名网站用什么语言做后台/怎么做百度网页
  • 网站建设与维护方式是什么/seo研究协会网app
  • 福州网站建设模板/百度百家号登录入口
  • 台州建设网站制作/知识付费小程序搭建
  • 如何利用影视网站做cpa/谷歌seo推广招聘
  • 关于棋牌游戏网站建设文案/seo整站优化外包
  • 做网站的那个语言好/免费开通网站
  • 百度竞网建设网站/中央新闻
  • 如何查找做网站的服务商/长沙seo
  • 湛江公司做网站/网络营销站点推广的方法
  • 杭州 做网站/域名估价
  • 琼山网站制作/友情链接平台赚钱吗
  • iSCSI服务配置全指南(含服务器与客户端)
  • Linux应用软件编程---多任务(线程)(线程创建、消亡、回收、属性、与进程的区别、线程间通信、函数指针)
  • wrap go as a telnet client lib for c to implement a simple telnet client
  • dify 调用本地的 stable diffusion api生成图片的工作流搭建
  • 安卓11 12系统修改定制化_____如何去除安卓11 12的系统签名验证
  • 【数据分享】上市公司供应链成本分摊数据(2007-2024)