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

福建建设注册管理中心网站淘宝指数网站

福建建设注册管理中心网站,淘宝指数网站,免费网站建设力荐 186一6159一6345绘政正规,汕头潮南网站建设智能指针 1.定义 ​ C中的智能指针是一种用于自动管理动态分配的内存的模板类,它们通过封装原始指针来提供自动的内存管理功能,从而避免了内存泄漏和悬挂指针等问题。C标准库中提供了几种智能指针类型,其中最常用的是std::unique_ptr、std:…

智能指针

1.定义

​ C++中的智能指针是一种用于自动管理动态分配的内存的模板类,它们通过封装原始指针来提供自动的内存管理功能,从而避免了内存泄漏和悬挂指针等问题。C++标准库中提供了几种智能指针类型,其中最常用的是std::unique_ptrstd::shared_ptrstd::weak_ptr

​ C++智能指针是在C++11版本中引入的。C++11及以后版本废弃了C++98中的auto_ptr,并从Boost标准库中引入了shared_ptrunique_ptrweak_ptr三种智能指针,以提供更强大和灵活的内存管理机制。

2.std::unique_ptr

  • 表示对对象的独占所有权,同一时间内只有一个std::unique_ptr可以指向某个给定对象。
  • std::unique_ptr被销毁时,它所指向的对象也会被自动删除。
  • 禁止复制构造和赋值操作,但支持移动语义。
#include <memory>  
#include <iostream>  class MyClass {  
public:  MyClass() { std::cout << "MyClass created\n"; }  ~MyClass() { std::cout << "MyClass destroyed\n"; }  void sayHello() { std::cout << "Hello!\n"; }  
};  int main() {  std::unique_ptr<MyClass> ptr(new MyClass());  ptr->sayHello();  // 当ptr离开作用域时,MyClass对象被自动删除  return 0;  
}

3.std::shared_ptr

  • 表示对对象的共享所有权,允许多个std::shared_ptr实例指向同一个对象。
  • 内部维护一个引用计数,用于记录当前有多少个std::shared_ptr实例指向该对象。
  • 当最后一个指向该对象的std::shared_ptr被销毁时,引用计数变为0,对象将被自动删除。
  • 支持复制构造和赋值操作,每次操作都会增加或减少引用计数。
#include <memory>  
#include <iostream>  class MyClass {  
public:  MyClass() { std::cout << "MyClass created\n"; }  ~MyClass() { std::cout << "MyClass destroyed\n"; }  void sayHello() { std::cout << "Hello!\n"; }  
};  int main() {  std::shared_ptr<MyClass> ptr1 = std::make_shared<MyClass>();  std::shared_ptr<MyClass> ptr2 = ptr1; // ptr2和ptr1共享对象  ptr1->sayHello();  // 当ptr1和ptr2都离开作用域时,MyClass对象被自动删除  return 0;  
}

4.std::weak_ptr

  • 是一种不拥有其所指对象的智能指针,主要用于解决std::shared_ptr之间的循环引用问题。
  • 不增加对象的引用计数,因此不会影响对象的生命周期。
  • 可以通过lock()成员函数尝试获取一个指向对象的std::shared_ptr,如果此时对象仍存在,则返回一个指向该对象的std::shared_ptr,否则返回一个空的std::shared_ptr
// 示例中省略了完整的类和对象定义,只展示weak_ptr的用途  
std::shared_ptr<A> ptrA = std::make_shared<A>();  
std::shared_ptr<B> ptrB = std::make_shared<B>();  ptrA->b_ptr = std::weak_ptr<B>(ptrB); // 使用weak_ptr避免循环引用  
ptrB->a_ptr = ptrA;  // ...  if (auto lockedPtr = ptrA->b_ptr.lock()) {  // 如果B对象还存在,lockedPtr将是一个非空的shared_ptr  
}
http://www.hkea.cn/news/26349/

相关文章:

  • 国家企业信息公示网(广东)海南快速seo排名优化
  • 高端网站设计 上海徐州seo排名公司
  • 泰安网站建设公司排名石家庄最新消息
  • 域名只做邮箱没网站要备案吗常见的网络推广方式包括
  • 昆山建设局网站360搜索首页
  • 正常做网站多少钱无锡网站制作无锡做网站
  • php做网站csdn网站seo公司哪家好
  • 今日头条建站工具何鹏seo
  • wordpress 培训模板优化落实疫情防控新十条
  • 关于做外汇现货的网站太原整站优化排名外包
  • 星悦做任务网站是新网站百度收录
  • 十大营销网站seo关键词查询工具
  • 怎么查询网站所有关键词靠谱的广告联盟
  • 超酷的网站设计磁力搜索引擎
  • 网站建设写程序用什么软件成都疫情最新消息
  • 做网站需要什么资金2022今天刚刚发生地震了
  • 建设网站费用主要包括哪些google商店
  • 专注邯郸建设手机网站贴吧友情链接在哪
  • 网站备案拍照背景志鸿优化网官网
  • 网站百度知道怎么做推广网站搜索引擎优化的方法
  • 网站建设注意哪些问题sem和seo是什么职业岗位
  • 一_建设网站前的市场分析奶茶软文案例300字
  • 做网站智能工具江阴企业网站制作
  • 怎么看网站有没有做推广大数据营销系统多少钱
  • 广东工厂搜索seoseo平台优化服务
  • 网站开发平台 eclipseseo网站推广案例
  • 什么网站做调查能赚钱关键词优化报价推荐
  • 网站开发职业认知小结开发一个app平台大概需要多少钱?
  • 装修公司全包项目seo搜索引擎实训心得体会
  • 爱站网是干什么的长沙关键词排名首页