C++入门——类的默认成员函数(取地址运算符重载)
文章目录
- 一、const成员函数
- 二、取地址运算符重载
- 总结
一、const成员函数
- 1.将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后⾯。
- 2.const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进⾏修改。
在下面的日期类中,我们定义了print函数。但如果我们定义const修饰的Date对象时,是无法调用的,这是一种权限的放大。
#include<iostream>
using namespace std;
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}// void Print(const Date* const this) constvoid Print(){cout << _year << "-" << _month << "-" << _day << endl;}
private:int _year;int _month;int _day;
};
int main()
{const Date d2(2024, 8, 5);d2.Print();return 0;
}
这里就需要用const修饰函数。const 修饰Date类的Print成员函数,Print隐含的this指针由 Date* const this 变为 const Date* const this
// void Print(const Date* const this) constvoid Print() const{cout << _year << "-" << _month << "-" << _day << endl;}int main()
{// 这⾥⾮const对象也可以调⽤const成员函数是⼀种权限的缩⼩Date d1(2024, 7, 5);d1.Print();const Date d2(2024, 8, 5);d2.Print();return 0;
}
注:const修饰指向的内容和非const拷贝赋值时才涉及权限的放大和缩小
被const修饰的函数中,无法再去修改成员变量
二、取地址运算符重载
取地址运算符重载分为普通取地址运算符重载和const取地址运算符重载,⼀般这两个函数编译器⾃动⽣成的就可以够我们⽤了,不需要去显⽰实现。除⾮⼀些很特殊的场景,⽐如我们不想让别⼈取到当前类对象的地址,就可以⾃⼰实现⼀份,胡乱返回⼀个地址。
class Date
{
public:Date(int year = 1, int month = 1, int day = 1){_year = year;_month = month;_day = day;}// void Print(const Date* const this) constvoid Print() const{cout << _year << "-" << _month << "-" << _day << endl;}//取地址运算符重载Date* operator&(){return this;// return nullptr;}const Date* operator&()const{return this;// return nullptr;}private:int _year;int _month;int _day;
};
总结
其实取地址运算符重载是不太需要去关注的
相关文章:
C++入门——类的默认成员函数(取地址运算符重载)
文章目录 一、const成员函数二、取地址运算符重载总结 一、const成员函数 1.将const修饰的成员函数称之为const成员函数,const修饰成员函数放到成员函数参数列表的后⾯。2.const实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进…...
学习记录:js算法(四十九):二叉树的层序遍历
文章目录 二叉树的层序遍历网上思路队列循环 总结 二叉树的层序遍历 给你二叉树的根节点 root ,返回其节点值的层序遍历 。 (即逐层地,从左到右访问所有节点)。 图一: 示例 1:如图一 输入:roo…...
【PCB工艺】表面贴装技术中常见错误
系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 1、什么是SMT和SMD2、表面贴装技术的优势是什么?3、通孔和表面贴装技术之间的区别是什么?4、焊…...
3.使用条件语句编写存储过程(3/10)
引言 在现代数据库管理系统中,存储过程扮演着至关重要的角色。它们是一组为了执行特定任务而编写的SQL语句,这些语句被保存在数据库中,可以被重复调用。存储过程不仅可以提高数据库操作的效率,还可以增强数据的安全性和一致性。此…...
Effective C++中文版学习记录(三)
Effective C中文版学习记录(三) 章节三:资源管理 进度:17/55 文章目录 Effective C中文版学习记录(三)条款13、以对象管理资源条款14、在资源管理类中小心copying行为条款15、在资源管理类中提供对原始资…...
VBA学习(76):文件合并神器/代码
1.定义变量 Dim savePath As String Dim SaveFile As String Dim dataFolder As String Dim FileSystem As Object Dim folder As Object Dim FileExtn As String Dim t As Integer Dim blnCkb As Boolean 2.自定保存文件名、选择待合并文件所在文件夹 Private Sub CkbName_…...
非农就业数据超预期,美联储降息步伐或放缓?
KlipC报道:当地时间10月4日,美国劳工部发布了最新的非农就业数据。数据显示,9月非农就业人数增加25.4万人,远超市场预期。失业率为4.1%,比上月略降0.1个百分点。平均时薪环比增长0.4%,亦高于市场预期。此外…...
每日OJ题_牛客_乒乓球筐_哈希_C++_Java
目录 牛客_乒乓球筐_哈希 题目解析 C代码 Java代码 牛客_乒乓球筐_哈希 乒乓球筐__牛客网 (nowcoder.com) 描述: nowcoder有两盒(A、B)乒乓球,有红双喜的、有亚力亚的……现在他需要判别A盒是否包含了B盒中所有的种类&#…...
基于SpringBoot+Vue的酒店客房管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...
检索增强思考 RAT(RAG+COT):提升 AI 推理能力的强大组合
在人工智能领域,大型语言模型(LLMs)已经取得了显著的进展,能够生成类似人类的文本并回答各种问题。然而,它们在推理过程中仍面临一些挑战,例如缺乏对事实的准确把握以及难以处理复杂的多步骤问题。为了解决…...
python脚本实现Redis未授权访问漏洞利用
之前介绍过Redis未授权访问漏洞,本文使用python实现Redis未授权访问检测以及对应三种getshell。 1 测试环境准备 CentOS 7(192.168.198.66/24):安装 Redis 服务器并用 root 权限开启服务,关闭保护模式;安…...
简单线性回归分析-基于R语言
本题中,在不含截距的简单线性回归中,用零假设对统计量进行假设检验。首先,我们使用下面方法生成预测变量x和响应变量y。 set.seed(1) x <- rnorm(100) y <- 2*xrnorm(100) (a)不含截距的线性回归模型构建。 &…...
上海理工大学《2023年+2019年867自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《上海理工大学867自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2023年真题 2019年真题 Part1:2023年2019年完整版真题 2023年真题 2019年…...
计算机网络面试题——第三篇
1. TCP超时重传机制是为了解决什么问题 因为TCP是一种面向连接的协议,需要保证数据可靠传输。而在数据传输过程中,由于网络阻塞、链路错误等原因,数据包可能会丢失或者延迟到达目的地。因此,若未在指定时间内收到对方的确认应答&…...
Elasticsearch 开放推理 API 增加了对 Google AI Studio 的支持
作者:来自 Elastic Jeff Vestal 我们很高兴地宣布 Elasticsearch 的开放推理 API 支持 Gemini 开发者 API。使用 Google AI Studio 时,开发者现在可以与 Elasticsearch 索引中的数据进行聊天、运行实验并使用 Google Cloud 的模型(例如 Gemin…...
react-问卷星项目(7)
实战 React表单组件 入门 重点在于change的时候改变state的值,类似vue的双向数据绑定v-model,即数据更新的时候页面同步更新,页面数据更新时数据源也能获得最新的值,只是Vue中设置在data中的属性默认绑定,React中需…...
【git】main|REBASE 2/6
很久没合并代码合并出现冲突,自动进入了 main|REBASE 2/6 的提示: 【git】main|REBASE 2/6 It looks like you’ve encountered several merge conflicts after a git pull operation while a rebase is in progress. Here’s how you can resolve these conflict…...
51单片机的水质检测系统【proteus仿真+程序+报告+原理图+演示视频】
1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器ph传感器浑浊度传感器蓝牙继电器LED、按键和蜂鸣器等模块构成。适用于水质监测系统,含检测和调整水温、浑浊度、ph等相似项目。 可实现功能: 1、LCD1602实时显示水温、水体ph和浑浊度 2、温…...
【python面试宝典7】线程池,模块和包
目录标 题目37:解释一下线程池的工作原理。题目38:举例说明什么情况下会出现KeyError、TypeError、ValueError。题目39:说出下面代码的运行结果。题目40:如何读取大文件,例如内存只有4G,如何读取一个大小为…...
Android input系统原理二
1.inputmanager启动源码分析 在SystemServer.java中构造了 inputmanagerservice的对象,在其构造函数中,最重要的是这个nativeInit函数。 下面是核心代码 inputManager new InputManagerService(context);public InputManagerService(Context context)…...
基于Whisper-large-v3的语音搜索引擎开发
基于Whisper-large-v3的语音搜索引擎开发 你有没有遇到过这种情况?手头有几百个小时的会议录音、课程录像或者播客音频,想找其中某个人说过的一句话,或者某个特定的知识点,结果只能从头到尾听一遍,费时又费力。或者&a…...
Python基础实战——批量处理文件(适合入门)
一、学习目标掌握 Python 文件操作(读取、写入、遍历),学会批量处理指定目录下的文件,比如批量修改文件名、提取文件内容,适合刚入门 Python 的程序员巩固基础语法。二、核心知识点os 模块:遍历目录、修改文…...
Catime终极指南:3个技巧让你成为Windows番茄时钟大师
Catime终极指南:3个技巧让你成为Windows番茄时钟大师 【免费下载链接】Catime A very useful timer (Pomodoro Clock).[一款非常好用的计时器(番茄时钟)] 项目地址: https://gitcode.com/gh_mirrors/ca/Catime Windows番茄时钟、桌面倒计时工具和时间管理软件…...
UnrealPakViewer实战指南:解决Pak文件解析难题的5个创新方法
UnrealPakViewer实战指南:解决Pak文件解析难题的5个创新方法 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 当你面对10GB加密Pak包&…...
OpenClaw技能开发入门:基于nanobot定制个人自动化模块
OpenClaw技能开发入门:基于nanobot定制个人自动化模块 1. 为什么需要自定义OpenClaw技能? 去年夏天,当我第一次接触OpenClaw时,最让我惊喜的不是它预置的几十种技能,而是它允许开发者像搭积木一样自由扩展功能。作为…...
保姆级教程:用PyTorch 1.13+Win11搞定MSTAR数据集分类(附完整代码)
从零实现MSTAR数据集分类:PyTorch全卷积网络实战指南 1. 环境配置与工具准备 在Windows 11系统上搭建PyTorch开发环境需要特别注意版本兼容性问题。以下是经过验证的稳定组合: PyTorch 1.13.0 CUDA 11.6 cuDNN 8.3.2Python 3.8-3.10(推荐…...
FlowState Lab创意作品展:从音乐旋律到光影变化的波动艺术
FlowState Lab创意作品展:从音乐旋律到光影变化的波动艺术 1. 波动艺术的新维度 当数据不再只是冰冷的数字,而是化作跳动的音符、流动的光影和变幻的图形,这就是FlowState Lab带来的创意革命。我们最近完成了一系列跨媒介艺术实验ÿ…...
解锁智能监控:提升网页变化追踪效率的完整指南
解锁智能监控:提升网页变化追踪效率的完整指南 【免费下载链接】changedetection.io The best and simplest free open source website change detection, website watcher, restock monitor and notification service. Restock Monitor, change detection. Designe…...
机器人中的多模态——RoboBrain
论文下载地址:arxiv.org/pdf/2502.21257 代码地址:https://github.com/FlagOpen/RoboBrain/ 数据集下载地址:https://github.com/FlagOpen/ShareRobot/ 目录1.关于RoboBrain1.1 RoboBrain的潜在应用场景1.2 RoboBrain具备哪些能力2.关于Share…...
eMMC5.1协议详解:从CMD0到CSD寄存器,手把手教你读懂关键命令
eMMC5.1协议深度解析:关键命令与寄存器实战指南 在嵌入式存储领域,eMMC5.1协议作为主流存储解决方案的核心规范,其命令集与寄存器操作直接决定了设备性能与稳定性。本文将聚焦协议中最关键的CMD命令序列与CSD寄存器结构,通过实际示…...
