shared_ptr 与 unique_ptr 的转换 笔记
推荐B站文章:
6.shared_ptr与unique_ptr_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV18B4y187uL?p=6&vd_source=a934d7fc6f47698a29dac90a922ba5a3我的往期文章:
独占指针:unique_ptr 与 函数调用-CSDN博客
https://blog.csdn.net/weixin_41987016/article/details/135841140?spm=1001.2014.3001.5501计数指针:shared_ptr (共享指针)与函数-CSDN博客
https://blog.csdn.net/weixin_41987016/article/details/135851596?spm=1001.2014.3001.5501
(1)shared_ptr 与 unique_ptr
- 不能将shared_ptr 转换为unique_ptr
- unique_ptr可以转换为shared_ptr
- 通过std::move
(2)常见的设计
- 将你的函数返回unique_ptr是一种常见的设计模式,这样可以提高代码的复用度,你可以随时改变为shared_ptr
- 因为返回unique_ptr类型的可以直接赋值给shared_ptr 类型的
#include <iostream>
#include <memory>
#include "cat.h"
using namespace std;std::unique_ptr<Cat> get_unique_ptr() { std::unique_ptr<Cat> cat_p = std::make_unique<Cat>("lanmao");return cat_p;
}int main(int argc,char* argv[]) {std::unique_ptr<Cat> c_p_1 = std::make_unique<Cat>("TomCat");std::shared_ptr<Cat> c_p_2 = std::move(c_p_1);// 将unique_ptr转换成shared_ptrcout<<"c_p_2 use count : " << c_p_2.use_count() << endl;// 1// funcstd::shared_ptr<Cat> c_p_3 = get_unique_ptr();if(c_p_3) {c_p_3->catInfo();cout<<"c_p_3 use count : " << c_p_3.use_count() << endl; // 输出1}cout<<"over~"<<endl;return 0;
}
执行结果:
PS D:\Work\C++UserLesson\cppenv\bin\Debug> ."D:/Work/C++UserLesson/cppenv/bin/Debug/app.exe"
Constructor of Cat : TomCat
c_p_2 use count : 1
Constructor of Cat : lanmao
cat info name : lanmao
c_p_3 use count : 1
over~
Destructor of Cat
Destructor of Cat
PS D:\Work\C++UserLesson\cppenv\bin\Debug>相关文章:
shared_ptr 与 unique_ptr 的转换 笔记
推荐B站文章: 6.shared_ptr与unique_ptr_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV18B4y187uL?p6&vd_sourcea934d7fc6f47698a29dac90a922ba5a3我的往期文章: 独占指针:unique_ptr 与 函数调用-CSDN博客https://blog.csdn.n…...
python windows和linux 文件同步
在Python中,可以使用paramiko库来实现Windows和Linux之间的文件同步。paramiko是一个用于SSH连接的Python库,可以用于在Windows和Linux之间进行文件传输。 以下是一个简单的示例代码,演示如何使用paramiko库在Windows和Linux之间同步文件&am…...
【数据结构】72变的双端队列
双端队列 前言一、双端队列1.1 双端队列的定义1.2 输入受限的双端队列1.3 输出受限的双端队列1.5 输入输出都受限的双端队列1.6 小结 二、双端队列的使用2.1 双端队列的出队序列——暴力求解2.1.1 栈的出栈序列2.1.2 输入受限的双端队列2.1.3 输出受限的双端队列2.1.4 输入输出…...
kafka为什么不支持读写分离?
kafka为什么不支持读写分离? 在kafka中,生产者写入消息,消费者读取消息的操作都是与 leader 副本进行交互的,从而实现的是一种主写主读的生产消费模型。kafka不支持读写分离,也就是主写从读。 读写分离有以下不足&am…...
arcgis 面要素shp数据处理
面要素是工作中用到最多的,那么面要素是如何形成的呢,主要还是由闭合的线要素转换而成。在面要素数据中常用的有以下几点: 一、 线转面(要素转面) 通过上一篇得到了点转线的要素,那么根据上节的线要素&am…...
数轴(0 ~ m)上有n个不同点,最多只能移动一个点,移动到[1, m]中任意一点,求最终最小相邻两个点的距离的最大值是什么
题目 思路:先找到相邻距离最小的位置,假设为pos, 那么不是移动第pos个点就是移动第(pos - 1)个点,先移动pos点,用数组vec存除了pos点之外的所有点,求出最小相邻距离和最大相邻距离,那么肯定将pos点插入到最大相邻距离中。 #include <bits/stdc++.h> using namesp…...
BGP路由反射-数据中心IDC项目经验
一、背景描述 R1,R2,R3在AS200区域内,R1和R2,R1和R3建立OSPF,宣告接口互联. AS200区域内,R1和R2建立IBGP, R1和R3建立IBGP R2和R4建立EBGP, R3和R5建立EBGP。 网络拓扑: 二、故障现象 R1和R2可以收到来自AS100区域R4的E…...
提取视频中的某一帧画面,留住视频中的美好瞬间
你是否曾经被视频中的某一帧画面深深吸引,却又惋惜于无法将其永久保存?现在,有了我们【媒体梦工厂】,这一遗憾将成为过去,这个软件可以提取视频中的某一帧保存为图片,为你留住那些稍纵即逝的美好。 所需工…...
一个好用的服务器控制面板
简介 它是一个免费开源的管理面板工具,可以帮助你集中管理多个服务器和网站。Ajenti 支持 Linux、BSD、Mac OS X和Windows 等多个操作系统,并且可以通过一个直观的 Web 界面来完成各种系统管理任务。 相比于其他管理面板,Ajenti有以下几个优…...
软件测评中心▏软件系统测试的定义与测试流程简析
软件系统测试是指在软件开发的各个阶段对软件系统进行全面、系统的测试,以发现并修复潜在的问题和错误。系统测试旨在确保软件在各种不同的环境和使用条件下都能正常运行,满足用户需求,并且具备良好的性能和稳定性,包括以下测试流…...
基于JavaWeb+SSM+Vue基于微信小程序生鲜云订单零售系统的设计和实现
基于JavaWebSSMVue基于微信小程序生鲜云订单零售系统的设计和实现 滑到文末获取源码Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 滑到文末获取源码 Lun文目录 目录 1系统概述 1 1.1 研究背景 1 1.2研究目的 1 1.3系统设计…...
查询列表实时按照更新时间降序排列 没有更新时间就按创建时间
例子: sql两个字段排序 ORDER BY update_time DESC , create_time DESC <select id"selectLawIllegalActivitiesList" parameterType"LawIllegalActivities" resultMap"LawIllegalActivitiesResult"><include refid"selectL…...
愉快的使用vscode刷leetcode,开启摸鱼新高度
文章目录 1. 安装leetcode插件2. 安装node.js3. vscode配置 1. 安装leetcode插件 插件扩展中搜索LeetCode,一般刚开始都是第一个,如下图所示。 2. 安装node.js window安装方法 去 node.js官网 下载相应的安装包,一路next即可。 ubuntu安…...
openssl3.2/test/certs - 003 - genroot “Root CA“ root-key2 root-cert2
文章目录 openssl3.2/test/certs - 003 - genroot "Root CA" root-key2 root-cert2概述笔记END openssl3.2/test/certs - 003 - genroot “Root CA” root-key2 root-cert2 概述 索引贴 > openssl3.2 - 官方demo学习 - test - certs 笔记 // openssl3.2/test/…...
npm install出错的各种情况
1.npm不再支持签名证书,npm install 走的是http协议,需要通过数字证书保证 解决方法: 解决方法:1、取消ssl验证:npm config set strict-ssl false 这个方法一般就可以解决了。 2、更换npm镜像源:npm confi…...
【Docker】Docker学习⑤ - Docker数据管理
【Docker】Docker学习⑤ - Docker数据管理 一、Docker简介二、Docker安装及基础命令介绍三、Docker镜像管理四、Docker镜像与制作五、Docker数据管理1. 数据类型1.1 什么是数据卷(data volume)1.1.1 创建APP目录并生成web页面1.1.2 启动容器并验证数据1.…...
C/C++ - 编程语法特性
目录 标准控制台框架 输入输出对象 命名空间 标准控制台框架 头文件 #include <iostream> 告诉编译器我们要使用iostream库尖括号中的名字指定了某个头文件(header) 入口函数 int main(void) 返回 return 0; 输出语句 std::cout << "H…...
Backtrader 文档学习-Target Orders
Backtrader 文档学习-Target Orders 第五部分 ipython 代码中,有详细解释持仓价值Value的计算,算是彩蛋。 1. 概述 sizer不能决定操作是买还是卖,意味着需要一个新的概念,通过增加小智能层可以决定买卖,即通过持仓份…...
QT发生弹出警告窗口
QTC开发程序弹出警告窗口,如上图 实施代码: #include <QMessageBox> int main() {// 在发生错误的地方QMessageBox::critical(nullptr, "错误", "发生了一个错误,请检查您的操作。");}上面的文字可以更改&#x…...
vue3使用特殊字符@、~代替路径src
在vite.config.js中引入 import { resolve } from pathexport default defineConfig({resolve:{alias:{~:resolve(__dirname,src)}} })vue3使用特殊字符、~代替路径src_vue3 ~/-CSDN博客...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
高防服务器价格高原因分析
高防服务器的价格较高,主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因: 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器,因此…...
大模型——基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程 下载安装Docker Docker官网:https://www.docker.com/ 自定义Docker安装路径 Docker默认安装在C盘,大小大概2.9G,做这行最忌讳的就是安装软件全装C盘,所以我调整了下安装路径。 新建安装目录:E:\MyS…...
