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

手机触屏网站开发如何用html制作一个网页

手机触屏网站开发,如何用html制作一个网页,软件二次开发,企业网站建设组织人员可行性分析​​​​​​​ 目录 1--动态内存管理 2--shared_ptr类 2-1--make_shared 函数 2-2--引用计数 2-3--get 3--new和delete 4--shared_ptr和new结合使用 5--unique_ptr 6--weak_ptr 1--动态内存管理 new:在动态内存中为对象分配空间并返回一个指向该对象的指…

​​​​​​​

目录

1--动态内存管理

2--shared_ptr类

2-1--make_shared 函数

2-2--引用计数

2-3--get

3--new和delete

4--shared_ptr和new结合使用

5--unique_ptr

6--weak_ptr


1--动态内存管理

new:在动态内存中为对象分配空间并返回一个指向该对象的指针;

delete:接受一个动态对象的指针,销毁该对象并释放与之关联的内存;

C++11新标准两类智能指针(负责自动释放所指向的对象):

        ① shared_ptr:允许多个指针指向同一个对象;

        ② unique_ptr:指针独占所指向的对象;

        ③ weak_ptr:指向 shared_ptr 所管理的对象,是一种若引用(不会递增引用计数);

2--shared_ptr类

2-1--make_shared 函数

        make_shared 函数在动态内存中分配一个对象并进行初始化,返回指向该此对象的shared_ptr

        使用 make_shared 必须显式指定对象的类型

std::shared_ptr<int> p = std::make_shared<int>(42);

2-2--引用计数

        每个 shared_ptr 都有一个关联的计数器,其称为引用计数,当拷贝一个 shared_ptr 时,计数器会递增;(当用一个 shared_ptr 初始化另一个 shared_ptr,或者将其作为参数进行传递以及作为函数的返回值时,都会使关联的计数器递增;当给 shared_ptr 赋予一个新值或是 shared_ptr 被销毁(即离开局部作用域)时,计数器会递减);

        当一个 shared_ptr 的计数器为 0 时,会自动释放管理的对象;

2-3--get

        get 函数返回一个内置指针,指向智能指针管理的对象,get 用来将指针的访问权限传递给代码,只有确定代码不会 delete 指针的情况下才能使用 get。

std::shared_ptr<int> p(new int(42));
int *q = p.get();
{std::shared_ptr<int>(q);
}// 程序块结束,q被销毁
int foo = *p; // 未定义,p指向的内存已经被释放;

3--new和delete

        new 无法为其分配的对象命名,只返回一个指向该对象的指针;

        默认情况下,动态分配的对象是默认初始化的(没有默认构造函数的内置类型将是未定义的);

        对动态分配的对象进行值初始化,只需在类型名后跟一对空括号即可;

int *pi1 = new int; // 默认初始化,*pi1的值未被定义
int *pi2 = new int(); // 值初始化,*pi2的值为0

        delete 销毁给定指针所指向的对象,并释放对应的内存;

        当 delete 一个指针后,指针变为空悬指针(指向一块曾经保存数据对象但已无效的内存的指针);对 delete 后的指针赋予 nullptr ,表明指针不指向任何对象,避免空悬指针的相关问题;

int *p(new int(42)); // p 指向动态内存
auto q = p; // p和q指向相同的内存
delete p; // p和q均变为无效
p = nullptr; // 指出 p 不再指向任何对象

4--shared_ptr和new结合使用

        可以使用 new 返回的指针来初始化智能指针,接受指针参数的智能指针构造函数是 explicit 的,即必须使用直接初始化形式来初始化智能指针,不能通过内置指针隐式转换为一个智能指针;

std::shared_ptr<int> p1 = new int(1024); // 错误
std::shared_ptr<int> p2(new int(1024)); // 正确// 错误
std::shared_ptr<int> clone(int p){return new int(p); 
}// 正确
std::shared_ptr clone(int p){return std::shared_ptr<int>(new int(p));
}

5--unique_ptr

        不同于 shared_ptr,某个时刻只能有一个 unique_ptr 指向一个给定的对象;

        定义 unique_str 时需要将其绑定到一个 new 返回的指针上,初始化 unique_ptr 必须采用直接初始化形式;

std::unique_ptr<int> p(new int(42));

        由于 unique_str 拥有它指向的对象,因此 unique_ptr 不支持普通的拷贝或赋值操作;

        不能拷贝或赋值 unique_ptr,但可以通过调用 release 或 reset 将指针的所有权从一个unique_ptr 转移到另一个 unique_ptr;        

// 所有权从 p1 转移给 p2,release 将p1置为空
std::unique_ptr<std::string> p2(p1.release());std::unique_ptr<std::string> p3(new std::string("xxxxx"));
p2.reset(p3.release()); // p2释放原来指向的内存,所有权从p3转移给p2

6--weak_ptr

        weak_ptr 指向由一个 shared_ptr 管理的对象,将一个 weak_ptr 绑定到一个 shared_ptr 不会改变 shared_ptr 的引用计数;一旦 shared_ptr 的引用计数为0,weak_ptr也会相应自动释放;

        使用 weak_ptr 访问对象前,必须调用 lock 判断对象是否存在;如果对象存在,lock 返回一个指向共享对象的 shared_ptr;

auto p = std::make_shared<int>(42);
std::weak_ptr<int> wp(p); // wp若共享p,p的引用计数未改变
if(std::shared_ptr<int> np = wp.lock()){.... // np 与 p 共享对象
}

http://www.qdjiajiao.com/news/8109.html

相关文章:

  • 泰安高新区建设局网站不花钱网站推广
  • 手机网站建设可行性分析厉害的seo顾问
  • 网站建设 局部放大镜功能湖南关键词优化首选
  • 深圳有什么做招聘网站的公司吗怎么建个网站
  • 甘肃住房建设厅网站网站设计模板
  • 崇州 网站建设 有限公司站长工具同大全站
  • 辽宁省建设银行招聘网站网址解析ip地址
  • 响应式网站案例源码yandex引擎
  • 电子商务网站建设的答案比较好网站制作公司
  • 做休闲会所网站制作营销网站建设网站开发
  • 最牛的手机视频网站建设百度助手app下载
  • django做购物网站亚马逊查关键词排名工具
  • 百度搜索网站被跳转到其他网站苏州搜索引擎排名优化商家
  • wordpress 去除评论框东莞网站推广优化公司
  • 陕西省交通建设公司网站武汉建站优化厂家
  • 企业网站备案需要沧州百度推广公司
  • 购买域名后怎么做网站南昌关键词优化软件
  • 做网站的项目实施方案一站式媒体发布平台
  • 发卡网站建设7az沈阳网站优化
  • 柳州网站建设推荐seo怎么搞
  • 阿里云做网站成都seo培训
  • 做瓷砖在什么网站上找素材好搜seo
  • 有什么网站可以做设计兼职的东莞网站seo优化
  • 用vue做的网站怎么实现响应式河北seo推广方案
  • 南宁做网站优化网络服务合同
  • 电子商务网站建设与管理的感受b2b国际贸易平台
  • 做信息类网站有哪些seo确定关键词
  • 3d地图网站模板html自己怎么做网站推广
  • 怎么了解百度蜘蛛到哪个网站营销策划书范文案例
  • 成都p2p网站建设百度登陆页面