const shared_ptr<int>和shared_ptr<const int>的区别

const shared_ptr 和 shared_ptr 在 C++ 中表示两种不同的概念,尽管它们都与智能指针和常量性有关。下面是它们之间的主要区别:

const shared_ptr

当你声明一个 const shared_ptr,你实际上是在声明一个指向 int 的智能指针,而这个智能指针本身是不可变的。这意味着你不能改变这个智能指针所指向的对象(即你不能使其指向另一个对象),但你可以修改它所指向的 int 对象的值(除非该对象本身是常量)。

const std::shared_ptr<int> ptr = std::make_shared<int>(42);  // 正确:修改 ptr 所指向的 int 的值  
*ptr = 100;  // 错误:不能改变 ptr 所指向的对象  
// ptr = std::make_shared<int>(50); // 编译错误

shared_ptr

当你声明一个 shared_ptr,你声明了一个智能指针,它指向一个 const int 对象。这意味着你不能通过这个智能指针来修改它所指向的 int 对象的值,但你可以改变这个智能指针所指向的对象(即你可以使其指向另一个 const int)。

std::shared_ptr<const int> ptr = std::make_shared<const int>(42);  // 错误:不能修改 ptr 所指向的 const int 的值  
// *ptr = 100; // 编译错误  // 正确:可以改变 ptr 所指向的对象(虽然这在实践中可能并不常见)  
ptr = std::make_shared<const int>(50);

总结:

const shared_ptr:智能指针本身不可变,但可以修改所指向的 int 对象的值。

shared_ptr:智能指针可以变(可以指向其他对象),但所指向的 int 对象本身不可变。

在实际编程中,选择使用哪种类型取决于你的需求:如果你希望智能指针本身不可变,使用 const shared_ptr;如果你希望智能指针所指向的对象不可变,使用 shared_ptr。通常,保护数据不被修改是一个好的编程实践,因此 shared_ptr 在许多情况下可能更有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/729602.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

零基础学习JS--基础篇--数字和日期

数字 javascript中常用的四种数字进制&#xff1a;十进制、二进制、八进制和十六进制。 这些进制都具有通用性&#xff0c;如果你有语言基础则可以略过&#xff0c;下面说一下指数形式。 指数形式&#xff1a; 0e-5 // 0 0e5 // 0 5e1 // 50 175e-2 // 1.75 1e3 …

MacOS终端命令行死循环

一、原因 &#xff08;在vim ~/.bash_profile写了source ~/.bash_profile&#xff09; 二、解决办法 1、contrl c 手动停止死循环 2、vim ~/.bash_profile &#xff08;使用 Vim 编辑器打开 .bash_profile 文件&#xff09; 3、键盘输入i进入编辑模式&#xff0c;编辑完成…

如何建站?

1. 选择域名&#xff1a;短且易记&#xff0c;与网站内容相关。 2. 购买主机&#xff1a;选择稳定、安全且价格合适的主机服务商。 3. 选择网站程序&#xff1a;根据需求选择网站类型&#xff0c;如博客、企业站、电商。 4. 设计网站&#xff1a;确定布局、导航、色彩&#xff…

[剑指offer] 数组中重复的数字

目录 1. 题目描述 2. 代码实现 1. 题目描述 📚 题目描述:在一个长度为 的数组里的所有数字都在 0 到 n−1 的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为 7 的数组…

yudao-cloud 学习笔记

前端代码 浏览器打开 https://cloud.iocoder.cn/intro/ F12 执行代码 var aaa $(".sidebar-group-items").find("a"); var ll[]; var tt[]; for(var i0;i<aaa.length;i ){ ll.push("https://doc.iocoder.cn" $(aaa[i]).attr("href&quo…

云计算 3月4号 (自配本地和远程yum源)

自建yum源 本地源 一、使用本地的镜像文件来制作yum源(做完记得删除) 1、挂载dvd镜像或将镜像拷贝到机器中 mkdir /yum-repo mount /dev/cdrom /yum-repo # 如果我们在设置中挂载了镜像使用这个方法 mount 镜像的路径 /yum-repo # 如果我们拷贝镜像到了系统中&#xff0c;可…

Docker 构建前端项目生成镜像

一、使用 Docker 构建前端项目镜像&#xff1a; 下载安装 Docker Desktop准备一个前端项目&#xff08;vue/react&#xff09;在项目的根目录新建名为 Dockerfile 的文件 # 设置基础镜像 FROM nginx:latest# 复制项目文件 COPY dist/ /usr/share/nginx/html/# 配置Nginx COPY…

PHP伪协议是什么?

PHP伪协议是一种特殊的URL协议&#xff0c;它允许PHP直接从PHP内部生成数据或者访问PHP自身处理的数据流&#xff0c;而不需要外部资源。这些协议是由PHP解释器内部定义和处理的&#xff0c;不同于HTTP、FTP、HTTPS等标准网络协议。下面是PHP伪协议的说明&#xff1a; 1. file…

Hi3516DV500+SC2210 AIISP 黑光相机

1. Hi3516DV500 Hi3516DV500是一颗面向行业市场推出的高清智能网络摄像头SoC。该芯片最高支持2路sensor输入&#xff0c;支持最高5M30fps的ISP图像处理能力&#xff0c;支持2F WDR、多级降噪、六轴防抖、多光谱融合等多种传统图像增强和处理算法&#xff0c;支持通过AI算法对输…

Java实战:Spring Boot 通过Filter 实现 Gzip 压缩超大 JSON 对象

本文将详细介绍如何使用 Spring Boot 集成 Filter&#xff0c;实现 Gzip 压缩超大 JSON 对象。我们将深入探讨 Gzip 压缩的原理&#xff0c;以及如何利用 Java 的 GZIPInputStream 和 GZIPOutputStream 类实现 JSON 对象的压缩和解压缩。 1. 引言 在当今的互联网时代&#xf…

第11周,第三期技术动态

大家好&#xff0c;才是真的好。 真没想到&#xff0c;本周是今年第十一周&#xff0c;2024年还有不到三百天就结束了。 今天周五&#xff0c;我们继续介绍与Domino相关产品新闻&#xff0c;以及互联网或其他IT行业动态等。 一、在Windows 10和Windows 11上运行Domino和Trav…

什么情况下导致索引失效

索引在数据库中起着加快数据检索速度的作用&#xff0c;但在某些情况下&#xff0c;索引可能会失效&#xff0c;即数据库系统无法有效地使用索引来加速查询。以下是一些常见导致索引失效的情况&#xff1a; 1. 未使用索引列进行查询&#xff1a; - 当查询条件中未使用索引列…

案例研究|辛格林电梯借助DataEase实现数据整合与智能展示

辛格林电梯&#xff08;SIGLEN&#xff09;于2012年创立&#xff0c;是电梯领域的领军品牌之一。该公司总部位于广东佛山&#xff0c;是全国首批获得A1级电梯制造资质的企业&#xff0c;拥有省级工程技术研究中心。辛格林电梯专注于研发和生产高品质电梯产品&#xff0c;涵盖别…

vector的STL操作

vector 是 C 标准模板库&#xff08;STL&#xff09;中实现的动态数组&#xff0c;它能够存储连续的元素&#xff0c;这些元素可以通过索引访问。与数组相比&#xff0c;vector 的大小可以动态变化&#xff0c;提供了许多便利的成员函数来管理其存储的元素。下面是 vector 的一…

一个用libcurl多线程下载断言错误问题的排查

某数据下载程序&#xff0c;相同版本的代码&#xff0c;在64位系统中运行正常&#xff0c;但在32位系统中概率性出现断言错误。一旦出现&#xff0c;程序无法正常继续&#xff0c;即使重启亦不行。从年前会上领导提出要追到根&#xff0c;跟到底&#xff0c;到年后的今天&#…

通过统一规划和团队整合,提升企业财务洞察

在当今快节奏的商业环境中&#xff0c;企业财务职能部门更应该采取更迅速的行动来适应这个社会。大部分企业期待更高效的战略决策&#xff0c;尤其是面临海量数据信息的堆叠。但是企业领导者应该知道&#xff0c;速度本身并不是最终目标&#xff0c;财务团队必须更快地完成工作…

AI辅助研发2024

2024 年 AI 辅助研发趋势 随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&a…

基于springboot的大学生智能消费记账系统的设计与实现(程序+数据库+文档)

** &#x1f345;点赞收藏关注 → 私信领取本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345;** 一、研究背景…

六种方式,教你在SpringBoot初始化时搞点事情!

前言 在实际工作中总是需要在项目启动时做一些初始化的操作&#xff0c;比如初始化线程池、提前加载好加密证书....... 那么经典问题来了&#xff0c;这也是面试官经常会问到的一个问题&#xff1a;有哪些手段在Spring Boot 项目启动的时候做一些事情&#xff1f; 方法有很多…

2.1基本算法之枚举7827:质数的和与积

两个质数的和是S&#xff0c;它们的积最大是多少&#xff1f; #include<bits/stdc.h>//万能头 using namespace std;//不用说 int fun(int n){//创建一个自定义的函数&#xff0c;方便之后判断质数 int asqrt(n);//平方根&#xff0c;让电脑轻松一点 for(int i2…