【C++ | tips】const Date* operator() const中这两个const有什么区别?他们的作用是什么?

news2024/11/15 14:02:25
const Date* operator&() const 
{  
    return this;  
}

我们要明白operator&()这个函数是做什么的。

在C++中,&操作符通常用于获取一个对象的地址。但是,有时候我们想要自定义这个行为,比如说,我们想要控制别人怎么获取我们对象的地址。这时,我们就可以重载operator&()函数


现在,我们来看const Date* operator&() const这个声明。这里面有两个const,我们一个一个来说。

第一个const(在Date*前面):


这个const是告诉我们,通过这个operator&()函数返回的指针,它指向的是一个“不能改”的Date对象

就像你有一个玩具车,但是有人告诉你这个玩具车是“不能拆”的,你只能看,不能拆开它里面的零件。这里的“不能改”的Date对象也是这个意思,你只能通过这个指针来访问Date对象的内容,但是不能修改它。

第二个const(在函数声明的末尾):

这个const其实是告诉我们这个函数是一个“不会改变对象状态”的函数。就像你去图书馆借书,你只是在图书馆里看看书,不会把书带走或者把书弄坏。

这里的函数也是这样的,它只是在你的对象上做了一个“查看地址”的操作,没有做任何会改变你对象状态的事情。

对于operator&()这个函数来说,加上这个const可以让代码更加清晰,表明这个函数的意图是安全的,可以在常量对象上调用。


总结一下,const Date* operator&() const这个函数的意思是:

我提供了一个获取我对象地址的方法,但是这个地址指向的是一个你不能修改的Date对象,而且这个方法本身也不会改变我的对象状态。” 

这样,别人就可以安全地通过这个方法来获取你的对象的地址,同时也不用担心会不小心修改到你的对象。

 

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

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

相关文章

【linux-Day3】linux的基本指令<中>

【linux-Day3】linux的基本指令<中> linux下的基本指令&#x1f4e2;man&#xff1a;访问linux手册页&#x1f4e2;echo&#xff1a;把字符串写入指定文件中&#x1f4e2;cat&#xff1a;查看目标文件的内容&#x1f4e2;cp&#xff1a;复制文件或目录&#x1f4e2;mv&am…

Scrapy爬虫IP代理池:提升爬取效率与稳定性

在互联网时代&#xff0c;数据就是新的黄金。无论是企业还是个人&#xff0c;数据的获取和分析能力都显得尤为重要。而在众多数据获取手段中&#xff0c;使用爬虫技术无疑是一种高效且广泛应用的方法。然而&#xff0c;爬虫在实际操作中常常会遇到IP被封禁的问题。为了解决这个…

详解RFM模型

详解RFM模型 一、定义二、RFM模型的三个指标1‌、最近一次消费&#xff08;Recency&#xff09;‌2、消费频率&#xff08;Frequency&#xff09;‌3、消费金额&#xff08;Monetary&#xff09;‌ 三、RFM模型的应用和分类1、精细化营销2、提升客户满意度3、风险管理4、产品优…

超详细超实用!!!零基础java开发之云风笔记更新数据接口开发(十)

云风网 云风笔记 云风知识库 一、service/NoteApi新增updateNode接口定义 public interface NoteApi {...int updateNote(NoteManage noteManage); }二、service/impl/NoteServiceImpl接口实现逻辑 public class NoteServiceImpl implements NoteApi {AutowiredNoteMapper n…

5、SAP定义科目组和字段控制

定义解释 用于创建科目组&#xff0c;并进行输入控制&#xff0c;即在输入科目时&#xff0c;哪些自动允许输入&#xff0c;哪些自动隐藏等。科目组是将性质类似的科目分类&#xff0c;组要维护前台会计科目主数据。(统驭科目–字段状态组–凭证输入)。 后台配置 路径&#…

当电脑错误:msvcp140.dll丢失的解决方法?总结七种修复方法

在使用 Windows 操作系统时&#xff0c;许多用户可能会遇到系统会弹出错误消息&#xff0c;提示“msvcp140.dll 丢失”或“msvcp140.dll 未找到”的问题。这个动态链接库文件是 Microsoft Visual C 2015 Redistributable Package 的一部分&#xff0c;用于支持使用 Visual C 20…

linux 双网卡服务器突然断电后网卡单通故障解决

某台linux 双网卡服务器突然断电后网卡单通故障解决 故障现象&#xff1a;断电后重启服务器&#xff0c;主用网卡IP只能同网段访问&#xff0c;其他网段无法访问&#xff0c;备用网卡则正常&#xff1b; 解决方案&#xff1a;route -n查询路由信息&#xff0c;发现主网卡路由…

使用Microsoft Visual Studio Installer Projects 2022打包桌面程序

安装扩展程序 在Visual Studio中点击扩展->管理扩展&#xff0c;搜索并安装Microsoft Visual Studio Installer Projects 2022 安装程序打包 新建打包项目 在当前解决方案下添加Setup 项目&#xff0c;添加新项目时&#xff0c;搜索并选择使用上一步安装的Setup Projec…

Java学习Day42:骑龙救!(springMVC)

springMVC与sevlet都是对应表现层web的&#xff0c;但是越复杂的项目使用SpringMVC越方便 基于Java实现MVC模型的轻量级web框架 目标&#xff1a; 小案例&#xff1a; 1.导入依赖 spring-context: 提供 Spring 框架的核心功能&#xff0c;如依赖注入、事件发布和其他应用上…

嵌入式开发—CAN通信协议详解与应用(下)

书接上回&#xff1a; 嵌入式开发—CAN通信协议详解与应用&#xff08;中&#xff09;-CSDN博客 注&#xff1a;本文只是说明了如何进行基础的CAN收发操作&#xff0c;复杂CAN操作可以看这篇文章 Linux 底软开发——对CAN的详细操作&#xff08;周期发送&#xff0c;异常检测…

VMware ESXi 8.0U3b 发布下载,新增功能概览

VMware ESXi 8.0U3b 发布下载&#xff0c;新增功能概览 同步发布 Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitachi (日立)、Fujitsu (富士通)、NEC (日电) 定制版 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-esxi-8-u3/&#…

3分钟了解 跨网文件安全交换的最佳方案是什么

跨网文件交换的背景介绍 跨网文件安全交换是指在不同网络环境下&#xff08;如不同的组织、企业、机构或国家&#xff09;进行文件传输时&#xff0c;确保文件的安全性、完整性和保密性。随着信息技术的发展和网络的广泛应用&#xff0c;跨网文件交换变得越来越普遍&#xff0…

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期]

QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期] 第五期介绍&#xff1a;频道模块之接口授权管理和发言管理 目录 QQ频道机器人零基础开发详解(基于QQ官方机器人文档)[第五期]第五期介绍&#xff1a;频道模块之接口授权管理和发言管理获取机器人在频道可用权限列表…

电磁场与电磁波 1.1矢量基础知识

1.标量 2.矢量 大小方向 用有方向的线段表示 在直角坐标系下 3.运算法则 (1)加法&#xff1a;平行四边形法则 (2)乘法&#xff1a;点乘&叉乘 点乘 两个向量a与b的内积为 ab |a||b|cos∠(a, b)&#xff0c;特别地&#xff0c;0a a0 0&#xff1b;若…

Kettle的安装与基本使用

什么是Kettle&#xff1f; Kettle最早是一个开源的ETL&#xff08;Extract-Transform-Load的缩写&#xff09;工具&#xff0c;全称为KDE Extraction, Transportation, Transformation and Loading Environment。是一个功能丰富的ETL工具&#xff0c;它允许用户轻松地进行数据抽…

老板电器让AI融入烹饪?老板数字厨电实力展示AI做饭!

AI技术的迅猛发展已经深刻地改变了众多行业的面貌&#xff0c;其影响力远远超出了计算机科学本身的范畴。在追求生产效率与自动化的道路上&#xff0c;AI无疑成为最强大的驱动力之一&#xff0c;正是在这样的背景下&#xff0c;老板电器发布的「食神」AI大模型也为老板数字厨电…

国外创意二维码应用案例:韩国Cheil特别制作“希望胶带”,帮助寻找失踪儿童!

每年&#xff0c;在全世界都有大量的儿童失踪案件发生。对于父母来说&#xff0c;仅凭一张照片、一张海报要在茫茫人海里找到失踪的孩子&#xff0c;何其艰难&#xff1f; 2020年5月&#xff0c;韩国广告公司Cheil与韩国国家警察局宣布&#xff1a;为寻找长期失踪儿童&#xf…

VBA编写代码导出和导入类、模块、窗体

功能描述 为了方便备份代码&#xff0c;运行一个函数&#xff0c;导出类、模块、窗体。当在其他vba工程使用时&#xff0c;可以运行另外一个函数&#xff0c;快速导入代码。 1、开发人员宏设置&#xff1a;信任对VBA工程对象模型的访问 2、引用 Microsoft Visual Basic for A…

【非常实用—Navicat重置 MySQL 的密码】

Navicat重置 MySQL 的密码 连接本地数据库&#xff0c;忘记原始密码停止 MySQL 服务以安全模式启动 MySQL打开新的命令行窗口重置密码停止 MySQL 并重启 连接本地数据库&#xff0c;忘记原始密码 停止 MySQL 服务 在命令行中使用以下命令停止服务&#xff08;Windows 下&#…

2024秋季学期期中考

密码 mmmd5 直接在网上找一个md5解密的网站现场来解就可以了。每一段都拼接起来就可以了。 但是的话&#xff0c;也可以直接用脚本&#xff0c;但是要用到MD5的字典。 它给了一个附件&#xff0c;可以借助此来解答。 那么我们主要来学习一下hash函数&#xff0c; 哈希函数&…