首页 > 编程语言 >C++智能指针

C++智能指针

时间:2024-06-16 21:10:34浏览次数:12  
标签:std doSomething weak C++ 智能 shared unique ptr 指针

std::unique_ptr: 独特所有权模型,一个std::unique_ptr在同一时间内只允许有一个对象实例。它不允许被复制,但可以被移动。
std::shared_ptr:共享所有权模型,多个std::shared_ptr可以指向同一对象,通过引用计数机制来管理对象的生命周期。当最后一个指向对象的std::shared_ptr被销毁时,对象会被自动删除。
std::weak_ptr:用于与std::shared_ptr配合使用,它不增加对象的引用计数,但可以访问由std::shared_ptr管理的对象。std::weak_ptr主要用于解决std::shared_ptr可能导致的循环引用问题。

include

include

class MyClass {
public:
void doSomething() {
std::cout << "Doing something." << std::endl;
}
};

int main() {
// 使用 std::unique_ptr
std::unique_ptr uniquePtr(new MyClass());
uniquePtr->doSomething();

// 使用 std::shared_ptr
std::shared_ptr<MyClass> sharedPtr1(new MyClass());
std::shared_ptr<MyClass> sharedPtr2 = sharedPtr1; // 共享所有权
sharedPtr1->doSomething();

// 使用 std::weak_ptr
std::weak_ptr<MyClass> weakPtr = sharedPtr1;
if (auto lockedPtr = weakPtr.lock()) {
    lockedPtr->doSomething();
}

return 0;

}

标签:std,doSomething,weak,C++,智能,shared,unique,ptr,指针
From: https://www.cnblogs.com/chhblogs/p/18251242

相关文章

  • 【C++】C/C++内存管理
    C/C++内存管理C/C++内存分布C语言中的内存管理方式C++中内存管理方式内置类型自定义类型operatornew和operatordelete函数new和delete实现原理定位new表达式(placement-new)malloc/free与new/delete的区别内存泄漏何为内存泄漏内存泄漏的分类如何检测内存泄漏如何避免内......
  • #C语言结构体/结构体指针/单链表学习必备总结(浓缩版)#
    一.结构体的定义结构体是一种用户自定义的数据类型,用于将多个不同类型的数据组合在一起形成一个新的数据类型。结构体由多个成员变量组成,每个成员变量可以是不同的数据类型,可以是基本数据类型(如整型、浮点型、字符型等)或其他结构体类型。结构体的成员变量在内存中是按照声明的......
  • 人工智能和机器学习的应用日益广泛,在医疗健康领域的具体应用是什么?
    人工智能(AI)和机器学习(ML)在医疗健康领域的应用日益广泛,涵盖了从疾病预测、辅助诊断、药物研发到健康管理等多个方面。以下是一些具体的应用实例和成功案例:疾病预测与辅助诊断:机器学习算法,如决策树、贝叶斯网络、人工神经网络等,被用于疾病的早期预测和辅助诊断。这些技术能够分......
  • 生成式人工智能在军事中的作用
    2023年以来,以大语言模型为代表的生成式人工智能技术取得突破性进展,新产品、新技术陆续亮相,引发新一轮人工智能发展热潮。随着生成式人工智能系统在商用领域的成功应用,美军意识到生成式人工智能在指挥控制、情报分析、作战规划、辅助决策等军事领域具有巨大的应用潜力,因此已经开......
  • [转]32th@深入解析C++并发编程:从多线程到现代C++并发库@20240616
    深入解析C++并发编程:从多线程到现代C++并发库你有没有想过,为什么C++在多线程并发编程方面如此强大?C++11标准的发布,为并发编程带来了哪些革命性的变化?本文将深入探讨C++并发编程背后的技术原理,带你领略现代C++并发库的强大之处。文章将结合代码片段,为你揭示C++并发编程的精髓。1.......
  • [转]32th@探索C++的模板元编程:揭秘零运行时开销的高性能编程技术@20240616
    C++的模板元编程是一种强大的编程技术,它能够在编译时进行计算,生成高效的代码,而且不需要任何运行时开销。这种技术被广泛应用于高性能计算、游戏开发、金融等领域,是C++程序员必须掌握的技能之一。本文将深入探讨C++模板元编程的原理和实现方式,并通过代码案例来展示其强大的功能。相......
  • 智能合约与身份验证:区块链技术的创新应用
    一、引言区块链,一个近年来备受瞩目的技术名词,已经从最初的数字货币领域扩展到了众多行业。那么,究竟什么是区块链?它为何如此重要?本文将深入剖析区块链技术的原理、应用及未来发展。二、区块链的基本概念区块链,从本质上讲,是一个去中心化的分布式数据库。它由一系列按照时间顺......
  • 【华为OD】D卷真题100分: 生日礼物 C++代码实现
    【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript【华为OD】2024年C、D卷真题集:最新的真题集题库C/C++/Java/python/JavaScript-CSDN博客C、java、python、JS、C++代码实现:【华为OD】D卷真题100分:生日礼物C语言代码实现-CSDN博客【华为OD】D......
  • 【C++学习笔记 4】C++中的类
    面向对象的程序设计试想一下,假如我要写一个游戏,玩家在其中移动#include<iostream>#defineLOG(x)std::cout<<x<<std::endlvoidmove(intx,inty,intspeed);intmain(){ intPlayerX0,PlayerY0; intspeed=2; intPlayerX1,PlayerY1; intspeed......
  • c++学习笔记(二)
    c++中的引用引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。C++引用vs指针引用很容易与指针混淆,它们之间有三个主要的不同:不存在空引用。引用必须连接到一块合法的内存。一旦引用......