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

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

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.lryc.cn/news/441214.html

相关文章:

  • 开放的数据时代:Web3和个人隐私的未来
  • Kafka 安全机制详解及配置指南
  • 渗透测试综合靶场 DC-2 通关详解
  • 「iOS」——单例模式
  • Selenium自动化测试面试必备:高频面试题及答案整理
  • kettle 数据库迁移 使用分页原理实现 数据库mysql
  • 量化回测bt框架,策略类bt.Strategy详解,不是backtrader!提供bt双均线策略示例,比backtrader还简单
  • 网络安全宣传周 | DNS安全威胁与应对措施分享
  • 【图书介绍】《Altium Designer 24入门与案例实践(视频教学版)》
  • mysql事务的隔离级别学习
  • Chainlit集成Langchain并使用通义千问实现和数据库交互的网页对话应用增强扩展(text2sql)
  • rapidocr 提取汇总
  • Linux:用户账号管理和组账号管理
  • MyBatis-Plus分页查询、分组查询
  • 2024年9月HarmonyOS鸿蒙应用开发者高级认证全新题库(覆盖99%考题)
  • 大工程师插件下载 官方地址
  • rtems 5.3 qemu realview_pbx_a9 环境搭建:生成 rtems arm 工具链
  • 【算法】栈与模拟
  • 【Django】Django AI 聊天机器人项目:基于 ChatGPT 的 Django REST API
  • System.out源码解读——err 和 out 一起用导致的顺序异常Bug
  • 汽车软件开发之敏捷开发
  • ListBox显示最新数据、左移和右移操作
  • mysql实用系列:日期格式化
  • 时钟频率、AI采样率与AO更新率的关系
  • 代理IP设置后IP不变?可能的原因及解决方法
  • 瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商
  • Varjo在芬兰开设新工厂,以满足国防部门在XR模拟训练中的需求
  • python 识别省市、区县并组建三级信息数据库
  • 家用小型超声波清洗机怎么选?四大人气爆款品牌不可错过!
  • NVIDIA最新AI论文介绍NEST:一种用于语音处理的快速高效自监督模型