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

如何自己网站接装修生意做广州互联网大厂公司有哪些

如何自己网站接装修生意做,广州互联网大厂公司有哪些,学网络运营什么学校好,郑州外贸网站建设哪家好shared_ptr共享它指向的对象,多个shared_ptr可以指向(关联)相同的对象,在内部采用计数机制来实现。 当新的shared_ptr与对象关联时,引用计数增加1。 当shared_ptr超出作用域时,引用计数减1。当引用计数变为…

shared_ptr共享它指向的对象,多个shared_ptr可以指向(关联)相同的对象,在内部采用计数机制来实现。
当新的shared_ptr与对象关联时,引用计数增加1。
当shared_ptr超出作用域时,引用计数减1。当引用计数变为0时,则表示没有任何shared_ptr与对象关联,则释放该对象。

一、基本用法

shared_ptr的构造函数也是explicit,但是,没有删除拷贝构造函数和赋值函数。

1)初始化

方法一:
shared_ptr p0(new AA(“西施”)); // 分配内存并初始化。
方法二:
shared_ptr p0 = make_shared(“西施”); // C++11标准,效率更高。
shared_ptr pp1=make_shared(); // 数据类型为int。
shared_ptr pp2 = make_shared(); // 数据类型为AA,默认构造函数。
shared_ptr pp3 = make_shared(“西施”); // 数据类型为AA,一个参数的构造函数。
shared_ptr pp4 = make_shared(“西施”,8); // 数据类型为AA,两个参数的构造函数。
方法三:
AA* p = new AA(“西施”);
shared_ptr p0§; // 用已存在的地址初始化。
方法四:
shared_ptr p0(new AA(“西施”));
shared_ptr p1(p0); // 用已存在的shared_ptr初始化,计数加1。
shared_ptr p1=p0; // 用已存在的shared_ptr初始化,计数加1。

2)使用方法

智能指针重载了*和->操作符,可以像使用指针一样使用shared_ptr。
use_count()方法返回引用计数器的值。
unique()方法,如果use_count()为1,返回true,否则返回false。
shared_ptr支持赋值,左值的shared_ptr的计数器将减1,右值shared_ptr的计算器将加1。
get()方法返回裸指针。
不要用同一个裸指针初始化多个shared_ptr。
不要用shared_ptr管理不是new分配的内存。

3)用于函数的参数

与unique_ptr的原理相同。

4)不支持指针的运算(+、-、++、–)

二、更多细节

1)将一个unique_ptr赋给另一个时,如果源unique_ptr是一个临时右值,编译器允许这样做;如果源unique_ptr将存在一段时间,编译器禁止这样做。一般用于函数的返回值。
2)用nullptr给shared_ptr赋值将把计数减1,如果计数为0,将释放对象,空的shared_ptr==nullptr。
3)release()释放对原始指针的控制权,将unique_ptr置为空,返回裸指针。
4)std::move()可以转移对原始指针的控制权。还可以将unique_ptr转移成shared_ptr。
5)reset()改变与资源的关联关系。
pp.reset(); // 解除与资源的关系,资源的引用计数减1。
pp. reset(new AA(“bbb”)); // 解除与资源的关系,资源的引用计数减1。关联新资源。
6)swap()交换两个shared_ptr的控制权。
void swap(shared_ptr &_Right);
7)shared_ptr也可象普通指针那样,当指向一个类继承体系的基类对象时,也具有多态性质,如同使用裸指针管理基类对象和派生类对象那样。
8)shared_ptr不是绝对安全,如果程序中调用exit()退出,全局的shared_ptr可以自动释放,但局部的shared_ptr无法释放。
9)shared_ptr提供了支持数组的具体化版本。
数组版本的shared_ptr,重载了操作符[],操作符[]返回的是引用,可以作为左值使用。
10)shared_ptr的线程安全性:
shared_ptr的引用计数本身是线程安全(引用计数是原子操作)。
多个线程同时读同一个shared_ptr对象是线程安全的。
如果是多个线程对同一个shared_ptr对象进行读和写,则需要加锁。
多线程读写shared_ptr所指向的同一个对象,不管是相同的shared_ptr对象,还是不同的shared_ptr对象,也需要加锁保护。
11)如果unique_ptr能解决问题,就不要用shared_ptr。unique_ptr的效率更高,占用的资源更少。
示例1:

#include <iostream>
#include <memory>
using  namespace std;class AA
{
public:string m_name;AA() { cout << m_name << "调用构造函数AA()。\n"; }AA(const string & name) : m_name(name) { cout << "调用构造函数AA("<< m_name << ")。\n"; }~AA() { cout << "调用了析构函数~AA(" << m_name << ")。\n"; }
};int main()
{shared_ptr<AA> pa0(new AA("西施a"));     // 初始化资源西施a。shared_ptr<AA> pa1 = pa0;                       // 用已存在的shared_ptr拷贝构造,计数加1。shared_ptr<AA> pa2 = pa0;                       // 用已存在的shared_ptr拷贝构造,计数加1。cout << "pa0.use_count()=" << pa0.use_count() << endl;   // 值为3。shared_ptr<AA> pb0(new AA("西施b"));    // 初始化资源西施b。shared_ptr<AA> pb1 = pb0;                      // 用已存在的shared_ptr拷贝构造,计数加1。cout << "pb0.use_count()=" << pb0.use_count() << endl;   // 值为2。pb1 = pa1;      // 资源西施a的引用加1,资源西施b的引用减1。pb0 = pa1;      // 资源西施a的引用加1,资源西施b的引用成了0,将被释放。cout << "pa0.use_count()=" << pa0.use_count() << endl;   // 值为5。cout << "pb0.use_count()=" << pb0.use_count() << endl;   // 值为5。
}

推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家:
零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核)
https://xxetb.xet.tech/s/3Zqhgt

http://www.yayakq.cn/news/697779/

相关文章:

  • 佛山网站设计外包好项目网
  • 环保网站模版网站配色的原理和方法
  • 周至县做网站工作顺利的祝福语
  • 微网站和app的区别网站未备案wordpress链接
  • 网站娱乐一条龙搭建网站建立的优劣势
  • 施甸网站建设青岛网站建设机构
  • 做网站一般需要多久注册一家小规模公司多少钱
  • 快速网站建设服务网站建设中 下载
  • 网站底部广告河南省建设厅执业资格注册中心
  • 哪些经营范围是包含网站开发的ueditor编辑wordpress
  • 服饰类网站开发项目长春网站优化平台
  • 延安免费做网站wordpress把logo变大
  • 淄博网站建设公司有几家服务周到的网站建站
  • 福州官网网站建设怎样创建网站教程
  • 自己做网站还是公众号优秀的html5网站
  • 山东网站建设价格实惠wordpress 最近文章
  • 如何写网站优化方案微信嵌入手机网站
  • 搜什么关键词能找到网站域名换到另外一个wordpress
  • 做网站有软件吗网站开发月薪
  • 做中介卖房子开哪个网站免费网站建设排名
  • 长春网站制作最新招聘信息百度推广费用可以退吗
  • 营销型网站建设教程昆明网络推广怎么做
  • 微信公众号h5网站开发关联词有哪些 全部
  • 双语网站开发如何利用wordpress
  • 网站专题报道页面怎么做的重庆建设工程信息查询系统官网
  • 宁波网站推广公司秦皇岛市建设银行网点
  • 路桥建设网站wordpress 系统环境
  • 建立企业网站地址最打动人心的广告语
  • 顺德网站建设公司价位广告策划书
  • 专业营销网站深圳自适应网站推广价格