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

【C++】C++中this指针的介绍及使用

this指针的介绍及使用

  • 1.this指针的作用
    • 示例代码1:(this指针存放当前对象的地址)
    • 示例代码2:(this指针的使用)
  • 2.this指针的写法
    • 示例代码:

1.this指针的作用

Cat &cmpAge(Cat &other)
{if(other.age>age)return other;elsereturn *this;
}

用这个例子引出this指针:
指向当前对象的一个指针,哪个对象调用成员函数,this指针就指向该对象

示例代码1:(this指针存放当前对象的地址)

#include <iostream>using namespace std;/*引入this指针:C++专门用来指向当前对象地址的一个指针当前对象是谁,this指针就自动存放了谁的地址当前对象:谁调用了成员函数,谁就是当前对象
*/
class Rect
{
public:/*底层原理:当前对象.show();Rect *this=&当前对象 */void show(){cout<<"this指针打印出来的地址是当前对象的地址: "<<this<<endl;}
};int main(int argc,char **argv)
{//创建矩形类的对象Rect r1;Rect r2;cout<<"r1的地址: "<<&r1<<endl;cout<<"r2的地址: "<<&r2<<endl;//当前对象:谁(r1)调用了成员函数,谁(r1)就是当前对象r1.show();//当前对象:谁(r2)调用了成员函数,谁(r2)就是当前对象r2.show();
}/*
执行结果:r1的地址: 0x7ffdf90a5cb6r2的地址: 0x7ffdf90a5cb7this指针打印出来的地址是当前对象的地址: 0x7ffdf90a5cb6this指针打印出来的地址是当前对象的地址: 0x7ffdf90a5cb7
*/

示例代码2:(this指针的使用)

#include <iostream>using namespace std;/*引入this指针:C++专门用来指向当前对象地址的一个指针当前对象是谁,this指针就自动存放了谁的地址定义方法:比较两个矩形对象的大小(按照w和h比较,要求w,h都同时大于另外一个矩形),返回较大的那个对象
*/
class Rect
{
public://定义方法给w,h设置值,间接地使用w和hvoid setAttr(float _w,float _h);//比较两个矩形的大小Rect compare(Rect &other){if((this->w)>other.w && (this->h)>other.h){return *this;}elsereturn other;}void show(){cout<<"宽: "<<w<<endl;cout<<"高: "<<h<<endl;}
private://属性float w;  float h; 
};void Rect::setAttr(float _w,float _h)
{w=_w;h=_h;
}int main(int argc,char **argv)
{//创建矩形类的对象Rect r1;Rect r2;//设置宽高r1.setAttr(9.8,5.6);r2.setAttr(1.2,0.5);//比较大小//写法1:当前对象就是r1//Rect temp=r1.compare(r2);//temp.show();//写法2:当前对象就是r2Rect temp=r2.compare(r1);temp.show();
}/*
执行结果:宽: 9.8高: 5.6
*/ 

2.this指针的写法

this->age //指针调用
(*this).age //this解引用

示例代码:

#include <iostream>using namespace std;/*this指针平时写成员函数代码,可以省略的
*/
class Rect
{
public:void show(){}void setAttr(float _w,float _h){//写法1:标准的写法-->写全面//this->w=_w;//this->h=_h;//写法2:省略this的写法w=_w;h=_h;}
private:float w;float h;
};int main(int argc,char **argv)
{Rect r1;Rect r2;r1.setAttr(1.2,0.8);}

相关文章:

【C++】C++中this指针的介绍及使用

this指针的介绍及使用 1.this指针的作用示例代码1&#xff1a;&#xff08;this指针存放当前对象的地址&#xff09;示例代码2&#xff1a;&#xff08;this指针的使用&#xff09; 2.this指针的写法示例代码&#xff1a; 1.this指针的作用 Cat &cmpAge(Cat &other) {…...

51单片机入门教程——AT24C02(I2C 总线)(续)

前言 本教程基于B站江协科技课程进行个人学习整理&#xff0c;专为拥有C语言基础的零基础入门51单片机新手设计。既帮助解决因时间差导致的设备迭代调试难题&#xff0c;也助力新手快速掌握51单片机核心知识&#xff0c;实现从C语言理论到单片机实践应用的高效过渡 。 1.知识…...

Vue3响应式:effect作用域

# Vue3响应式: effect作用域 什么是Vue3响应式&#xff1f; 是一款流行的JavaScript框架&#xff0c;它提供了响应式和组件化的视图组织方式。在Vue3中&#xff0c;响应式是一种让数据变化自动反映在视图上的机制。当数据发生变化时&#xff0c;与之相关的视图会自动更新。 作用…...

Python打卡 DAY 18

聚类后的分析&#xff1a;推断簇的类型 知识点回顾&#xff1a; 1. 推断簇含义的2个思路&#xff1a;先选特征和后选特征 2. 通过可视化图形借助ai定义簇的含义 3. 科研逻辑闭环:通过精度判断特征工程价值 作业&#xff1a;参考示例代码对心脏病数据集采取类似操作&#xff…...

C++面向对象 继承

格式 class 子类&#xff1a;继承方式 父类 {}&#xff1b;//子类 又称为派生类 //父类 又称为基类 三种继承方式 继承中的同名成员处理 继承中的同名静态成员处理 包含子对象的派生类构造函数 作用&#xff1a; 包含子对象的派生类构造函数用于在创建派生类对象时&…...

Docker容器网络架构深度解析与技术实践指南——基于Linux内核特性的企业级容器网络实现

第1章 容器网络基础架构 1 Linux网络命名空间实现原理 1.1内核级隔离机制深度解析 1.1.1进程隔离的底层实现 通过clone()系统调用创建新进程时&#xff0c;设置CLONE_NEWNET标志位将触发内核执行以下操作&#xff1a; 内核源码示例&#xff08;linux-6.8.0/kernel/fork.c&a…...

【上位机——MFC】对象和控件绑定

对象和控件绑定 将控件窗口和类对象绑定具有两大作用 如果和数据类对象绑定&#xff0c;对象和控件可以进行数据交换。 如果和控件类对象绑定&#xff0c;对象就可以代表整个控件。 与数据类型对象绑定的使用 数据类型对象和控件可实现数据交互重写父类成员虚函数DoDataExch…...

Ubuntu20.04安装使用ROS-PlotJuggler

Ubuntu20.04安装使用ROS-PlotJuggler 安装PlotJuggler使用Plotjuggler 写在前面&#xff0c;先确保安装了ROS-Noetic&#xff0c;如果没有安装&#xff0c;可通过以下程序一键安装&#xff1a; wget http://fishros.com/install -O fishros && . fishros安装PlotJuggl…...

Go语言八股之并发详解

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…...

紫光同创FPGA实现HSSTHP光口视频传输+图像缩放,基于Aurora 8b/10b编解码架构,提供3套PDS工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的所有工程源码总目录----方便你快速找到自己喜欢的项目紫光同创FPGA相关方案推荐我这里已有的 GT 高速接口解决方案Xilinx系列FPGA实现GTP光口视频传输方案推荐Xilinx系列FPGA实现GTX光口视频传输方案推荐Xilinx系列FPGA实…...

怎样避免住宅IP被平台识别

要有效避免住宅IP被平台识别&#xff0c;需从IP质量选择、环境参数伪装、行为模式模拟、技术细节处理等多维度构建防御体系。以下是基于行业实践的综合性解决方案&#xff1a; 一、确保住宅IP的高纯净度 选择真实家庭网络IP 验证IP是否归属真实家庭宽带&#xff08;非机房IP伪装…...

(1-1)Java的JDK、JRE、JVM三者间的关系

目录 1.JVM (Java 虚拟机) 2. JRE (Java运行时环境) 3. JDK(Java开发工具包) 1.JVM (Java 虚拟机) JVM可看作程序的自行引擎&#xff0c;将字节码转化为特定平台上的机器代码执行 功能&#xff1a; 加载并执行字节码文件&#xff1a;JVM从 .class文件中加载字节码&#xf…...

机器学习之嵌入(Embeddings):从理论到实践

机器学习之嵌入(Embeddings)&#xff1a;从理论到实践 摘要 本文深入探讨了机器学习中嵌入(Embeddings)的概念和应用。通过具体的实例和可视化展示&#xff0c;我们将了解嵌入如何将高维数据转换为低维表示&#xff0c;以及这种转换在推荐系统、自然语言处理等领域的实际应用…...

【漫话机器学习系列】245.权重衰减(Weight Decay)

权重衰减&#xff08;Weight Decay&#xff09;详解 | L2正则化的奥秘 在深度学习和机器学习模型训练中&#xff0c;我们常常面临 过拟合&#xff08;Overfitting&#xff09; 的问题。 为了提高模型在未见数据上的泛化能力&#xff0c;正则化&#xff08;Regularization&…...

DSENT (Design Space Exploration of Networks Tool) 配合gem5

概述 DSENT是一种建模工具,旨在快速探索电子和新兴的片上光电网络(NoC)的设计空间。它为各种网络组件提供分析和参数化模型,并可在一系列技术假设下移植。给定架构级参数,DSENT从电气和光学构建块分层构建指定的模型,并输出详细的功率和面积估计。 版本 当前:0.91(2…...

汽车加气站操作工考试知识点总结

汽车加气站操作工考试知识点总结 加气站基本知识 了解加气站类型&#xff08;CNG、LNG、LPG等&#xff09;及其特点。 熟悉加气站的主要设备&#xff0c;如储气瓶组、压缩机、加气机、卸气柱、安全阀等。 掌握加气站工艺流程&#xff0c;包括卸气、储气、加压、加气等环节。…...

云蝠智能大模型语音交互智能体赋能电视台民意调研回访:重构媒体数据采集新范式

一、行业痛点与技术挑战 在媒体融合加速推进的背景下&#xff0c;电视台传统民意调研回访面临三大核心挑战&#xff1a; 人工成本高企&#xff1a;某省级卫视调研部门数据显示&#xff0c;人工外呼日均触达量仅 300-500 人次&#xff0c;人力成本占比超过 60%。数据质量参差&…...

数据可视化与数据编辑器:直观呈现数据价值

在当今数字化时代&#xff0c;数据可视化已成为企业洞察数据价值的关键手段。它与数据编辑器紧密结合&#xff0c;不仅能将复杂的数据转化为直观的图形、图表&#xff0c;以一种更加易懂的方式展现数据的规律、趋势和关系&#xff0c;还能借助数据编辑器随时对原始数据进行调整…...

ESP32蓝牙开发笔记(十四)

在 ESP32 的 BLE 开发中&#xff0c;esp_ble_gatts_add_char 是用于向 GATT 服务中添加特征&#xff08;Characteristic&#xff09;的核心函数。以下是该函数的详细说明、参数解析及示例代码&#xff1a; 函数原型 esp_err_t esp_ble_gatts_add_char(uint16_t service_handle…...

idea连接mongodb配置schemas

1. idea连接mongodb配置显示的schemas 默认展示 Default databse, 可以在此设置...

MySQL的函数

函数其实就是方法&#xff0c;就是别人封装好的东西 熟能生巧&#xff0c;加油&#xff01;&#xff01;&#xff01;完整代码在最后。 一、聚合函数 - group_concat() 就是对数据进行分组然后合并 二、数学函数 函数很多&#xff0c;大家至少看一遍&#xff0c;有一个大概印…...

苍穹外卖(订单状态定时处理、来单提醒和客户催单)

订单状态定时处理、来单提醒和客户催单 Spring Task cron表达式 入门案例 ①导入maven坐标 spring-context&#xff08;已存在&#xff09; ②启动类添加注解 EnableScheduling 开启任务调度 ③自定义定时任务类 订单状态定时处理 需求分析 代码开发 自定义定…...

SpringBoot应急物资供应管理系统开发设计

概述 基于SpringBoot的应急物资供应管理系统功能完善&#xff0c;采用了现代化的开发框架&#xff0c;非常适合学习或直接应用于实际项目。 主要内容 5.1 管理员功能模块 管理员可通过登录界面进入系统&#xff0c;使用用户名、密码和角色信息进行身份验证。登录后&#xf…...

spring cloud gateway 断言(Predicates)与过滤器(filters)

断言 在 Spring Cloud Gateway 中&#xff0c;内置的断言&#xff08;Predicates&#xff09;用于对请求进行条件匹配。Spring Cloud Gateway 提供了多种内置断言&#xff0c;可以根据请求的路径、头部、方法等条件来决定是否将请求路由到特定的处理器。 内置断言 基于路径 …...

MySQL-数据查询(多表连接JOIN)-04-(11-2)

学生表 学号 姓名 班级 课程编号 课程名称 是否结课 create table xs( xs_id int auto_increment primary key, xs_xm varchar(30), xs_bj varchar(30), xs_kcbh varchar(30), xs_kcmc varchar(30), xs_sfjk varchar(30) );insert xs values(1,张三,24大数据技术,1001,MYS…...

解决leetcode第3537题填充特殊网格

3537.填充特殊网格 难度&#xff1a;中等 问题描述&#xff1a; 给你一个非负整数N&#xff0c;表示一个x的网格。你需要用从0到-1的整数填充网格&#xff0c;使其成为一个特殊网格。一个网格当且仅当满足以下所有条件时&#xff0c;才能称之为特殊网格&#xff1a; 右上角…...

C++_MD5算法

文章目录 概要代码应用 概要 MD5算法在数据加密、一致性哈希、安全性验证等技术中有广泛的应用。 MD5算法的原理可简要的叙述为&#xff1a;MD5码以512位分组来处理输入的信息&#xff0c;且每一分组又被划分为16个32位子分组&#xff0c;经过了一系列的处理后&#xff0c;算法…...

深入理解C++ Lambda表达式:从基础到高级应用

在现代C编程中&#xff0c;Lambda表达式已经成为不可或缺的特性之一。自C11引入以来&#xff0c;Lambda极大地改变了我们编写函数对象和回调的方式&#xff0c;使代码更加简洁、表达力更强。本文将全面探讨C Lambda表达式的各个方面&#xff0c;从基础语法到高级应用场景&#…...

蓝桥杯 20. 倍数问题

倍数问题 原题目链接 题目描述 众所周知&#xff0c;小葱同学擅长计算&#xff0c;尤其擅长判断一个数是否是另一个数的倍数。但当面对多个数时&#xff0c;他就比较苦恼了。 现在小葱给了你 n 个数&#xff0c;希望你从中找出三个数&#xff0c;使得这三个数的 和是 K 的倍…...

2025最新出版 Microsoft Project由入门到精通(二)

目录 项目五部曲 第一步&#xff1a;先设置项目的信息和日历 项目的开始结束日期 项目的日历 默认日历改为全年无休&#xff08;除法定节假日&#xff09; 六天工作制/七天工作制设置方法 七天工作制的设置方法 全年无休工作制的设置方法 大小周交替日历设置方法&…...

从人体姿态到机械臂轨迹:基于深度学习的Kinova远程操控系统架构解析

在工业自动化、医疗辅助、灾难救援与太空探索等前沿领域&#xff0c;Kinova轻型机械臂凭借7自由度关节设计和出色负载能力脱颖而出。它能精准完成物体抓取、复杂装配和精细操作等任务。然而&#xff0c;实现人类操作者对Kinova机械臂的直观高效远程控制一直是技术难题。传统远程…...

【ABAP】定时任务DEBUG方法

事物码SM37 执行后&#xff0c;选中作业名&#xff0c;在输入框输入“JDBG”&#xff0c;进入调试模式&#xff08;提前在需要的调试的程序设置断点&#xff09;...

DDPM(Denoising Diffusion Probabilistic Models,去噪扩散概率模型)

简介 DDPM即去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Models&#xff09;&#xff0c;是一种生成式模型&#xff0c;在图像生成、视频生成等领域有广泛应用。以下是其详细介绍&#xff1a; 原理 DDPM的核心思想是通过在数据上逐步添加噪声来破坏数据…...

C26-冒泡排序法

一 算法步骤 外层循环:控制遍历轮数(共n-1轮,n为数组长度)内层循环:每轮比较相邻的元素,若顺序错误则交换,将当前一轮最大(最小)的元素移至末尾 二 实例 代码 #include <stdio.h> int main() {//数组及相关数据定义int arr[4]{12,4,78,23};int i;int j;int temp;int …...

CentOS 7.9 安装详解:手动分区完全指南

CentOS 7.9 安装详解&#xff1a;手动分区完全指南 为什么需要手动分区&#xff1f;CentOS 7.9 基本分区说明1. /boot/efi 分区2. /boot 分区3. swap 交换分区4. / (根) 分区 可选分区&#xff08;进阶设置&#xff09;5. /home 分区6. /var 分区7. /tmp 分区 分区方案建议标准…...

大模型系列(五)--- GPT3: Language Models are Few-Shot Learners

论文链接&#xff1a; Language Models are Few-Shot Learners 点评&#xff1a; GPT3把参数规模扩大到1750亿&#xff0c;且在少样本场景下性能优异。对于所有任务&#xff0c;GPT-3均未进行任何梯度更新或微调&#xff0c;仅通过纯文本交互形式接收任务描述和少量示例。然而&…...

BK精密电源操作软件 9130BA系列和手侧user manual

BK精密电源操作软件 9130BA系列和手侧user manual...

MATLAB的cvpartition函数用法

1. 函数作用 cvpartition 将数据集划分为训练集和测试集&#xff0c;支持多种交叉验证方法&#xff0c;包括&#xff1a; Hold-Out验证&#xff1a;单次划分&#xff08;如70%训练&#xff0c;30%测试&#xff09;K折交叉验证&#xff1a;数据分为K个子集&#xff0c;依次用其…...

含铜废水回收的好处体现

一、环境保护&#xff1a;减少污染&#xff0c;守护生态安全 降低重金属污染 含铜废水若直接排放&#xff0c;铜离子会通过食物链富集&#xff0c;对水生生物和人体造成毒性影响&#xff08;如肝肾损伤&#xff09;。回收处理可去除废水中90%以上的铜离子&#xff0c;显著降低…...

C++20新特新——02特性的补充

虽然上节我们介绍了不少关于协程的特点&#xff0c;但是大家可能对协程还是不是很了解&#xff0c;没关系&#xff0c;这里我们再对其进行补充&#xff0c;详细讲解一下&#xff1b; 一、协程函数与普通函数的区别 这里我们再回归到问题&#xff1a;普通函数和协程在这方面的…...

【c++】 我的世界

太久没更新小游戏了 给个赞和收藏吧&#xff0c;求求了 要游戏的请私聊我 #include <iostream> #include <vector>// 定义世界大小 const int WORLD_WIDTH 20; const int WORLD_HEIGHT 10;// 定义方块类型 enum BlockType {AIR,GRASS,DIRT,STONE };// 定义世界…...

Redis从入门到实战 - 高级篇(上)

一、分布式缓存 1. 单点Redis的问题 数据丢失问题&#xff1a;Redis是内存存储&#xff0c;服务重启可能会丢失数据 -> 实现Redis数据持久化 并发能力问题&#xff1a;单节点Redis并发能力虽然不错&#xff0c;但也无法满足如618这样的高并发场景 -> 搭建主从集群&…...

常见的卷积神经网络列举

经典的卷积神经网络&#xff08;CNN&#xff09;在深度学习发展史上具有重要地位&#xff0c;以下是一些里程碑式的模型及其核心贡献&#xff1a; 1. LeNet-5&#xff08;1998&#xff09; 提出者&#xff1a;Yann LeCun特点&#xff1a; 首个成功应用于手写数字识别&#xff…...

Linux如何安装AppImage程序

Linux如何安装AppImage程序 文章目录 Linux如何安装AppImage程序 在 Linux 中&#xff0c;.AppImage 是一种便携式的应用程序格式&#xff0c;无需安装即可运行。 1.赋予该文件可执行权限 可以使用下列命令&#xff0c;赋予可执行权限 # 举个例子 chmod x /path/to/MyApp.App…...

人工智能如何进行课堂管理?

人工智能如何协助老师课堂管理&#xff1f; 第一步&#xff1a;在腾讯元宝对话框中输入&#xff1a;如何协助老师进行课堂管理&#xff0c;通过提问&#xff0c;我们了解了老师高效备课可以从哪些方面入手&#xff0c;提高效率。 第二步&#xff1a;编辑问题进行提问&#xf…...

如何理解参照权

在管理学和组织行为学中&#xff0c;“参照权力”&#xff08;Referent Power&#xff09;是一种非常重要的权力来源&#xff0c;它属于非强制性权力的一种&#xff0c;主要基于个人特质和人际关系。以下是对参照权力的详细解释&#xff1a; 一、定义 参照权力是指一个人由于…...

从一次被抄袭经历谈起:iOS App 安全保护实战

如何保护 iOS App 的最后一道防线&#xff1a;那些你可能忽略的混淆技巧 如果你曾认真反编译过别人的 .ipa 文件&#xff0c;很可能会有这种感受&#xff1a;“哇&#xff0c;这代码也太干净了吧。” 类名像 UserManager&#xff0c;方法名是 getUserToken&#xff0c;甚至资源…...

从交互说明文档,到页面流程图设计全过程

依据交互说明文档绘制页面流程图&#xff0c;能够将抽象的交互逻辑转化为可视化、结构化的表达&#xff0c;为开发、测试及团队协作提供清晰指引。接下来&#xff0c;我们以外卖 App 订单确认页为例&#xff0c;详细拆解从交互说明文档到完整页面流程图的设计全过程。 一、交互…...

fedora系统详解详细版本

Fedora 系统详解&#xff1a;从起源到实践的深度解析 一、Fedora 概述&#xff1a;开源社区的技术先锋 Fedora 是由 Fedora 项目社区 开发、Red Hat 公司赞助 的 Linux 发行版&#xff0c;以 自由开源、技术前沿 和 稳定性平衡 著称。它是 Red Hat Enterprise Linux&#xff…...

2025-05-07-FFmpeg视频裁剪(尺寸调整,画面比例不变)

原比例如图 原比例如图裁剪后的比例 代码&#xff1a; 方法一&#xff1a;极速 ffmpeg -i input.mp4 -vf "crop1080:750:0:345" -c:v libx264 -preset ultrafast -c:a copy output.mp4关键参数说明&#xff1a; vf “crop宽:高❌y”&#xff1a;定义裁剪区域。 …...