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

this指针C++

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀 

目录

🐰this 指针

🌸this指针的定义

🌸this指针的应用

🌸this指针的注意事项:


🐰this 指针

🌸this指针的定义

c++为类的对象分配内存空间时只为对象的数据成员分配内存空间,而将对象的成员函数放在另外一个公共区域,同一个类的多个对象共享它们的成员函数。那么,同一个类的多个对象的成员函数在访问对象的数据成员时,怎么确保访问的是正确的数据成员呢?例如声明的长方体类Box,定义了两个对象box1和box2,对于调用“box1.volume()”,应该box1中的height,width和length计算长方体box1的体积,对于“box2.volume()”,应该box2中的height,width和length计算长方体box1的体积。现在box1和box2调用的都是同一段代码,系统是怎么区分应该访问box1的数据成员还是box2的数据成员呢?

其实在每一个成员函数中都包含了一个特殊的指针,这个指针的名字是固定的,称为this指针。this指针是指向本类对象的指针,它的指向是被调用成员函数所在的对象,即调用哪个对象的该成员函数,this指针就指向哪个对象。在成员函数内部访问数据成员的前面隐藏着this指针。如前面前面提到的Box类中的volume函数,其中的height*width*length实际等价于(this->height)*(this->width)*(this*length)。如果调用box1对象的volume函数,则this指针就指向对象box1,所以(this->height)*(this->width)*(this*length)就相当于(box1.height)*(box1.width)*(b ox1.length),这样就是计算的box1的体积。

🌸this指针的应用

this指针是由系统通过参数隐式传递给成员函数的。如下列成员函数volume的定义:

float Box::volume()
{return  height*width*length;
}

c++系统隐式处理为:

float Box::volume(Box* this)
{return  (this->height)*(this->width)*(this*length);
}

在函数形参表中增加一个this指针,而在调用时隐藏增加一个实参:

box1.volume(&box1);

需要注意的是,以上是帮助理解this指针的作用和它的工作原理,这些操作都是系统自动完成的,在使用时不需要再数据成员前面加上this指针,更不用调用的时候写出调用成员函数对象的地址作为实参。

有时候我们也会显示使用this指针,例如
Box的构造函数box,数据成员为length, width, weight
Box::box(float length, float width, float weight)
{length=length;width=width;weight=wight;
}

这样构造函数的定义,系统就分不清,哪个length是数据成员,哪个length是形参,因为他们的名字一样

修改为:

Box::box(float length, float width, float weight)
{this->length=length;this->width=width;this->weight=wight;
}

这样系统就可以分清,’=‘左边的是数据成员,’=‘右边的是形参

🌸this指针的注意事项:

this指针并不是创建对象的一部分,this指针的类型取决于使用this指针的成员函数类型以及对象类型。

this指针不能再静态函数中使用

this指针在成员函数的开始执行前构造的,在成员函数的执行结束后清除。

创建一个对象后,不能通过对象使用this指针。也无法知道一个对象的this指针的位置,在成员函数里,你可以知道this指针的位置通过&this,也可以直接使用的。

🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸    

相关文章:

this指针C++

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章 🔥座右铭:“不要等到什么都没有了,才下定决心去做” &#x1…...

SpringBoot+WebSocket实时监控异常

# 写在前面此异常非彼异常,标题所说的异常是业务上的异常。最近做了一个需求,消防的设备巡检,如果巡检发现异常,通过手机端提交,后台的实时监控页面实时获取到该设备的信息及位置,然后安排员工去处理。因为…...

Baumer工业相机堡盟相机如何使用自动曝光功能(自动曝光优点和行业应用)(C++)

项目场景 Baumer工业相机堡盟相机是一种高性能、高质量的工业相机,可用于各种应用场景,如物体检测、计数和识别、运动分析和图像处理。 Baumer的万兆网相机拥有出色的图像处理性能,可以实时传输高分辨率图像。此外,该相机还具…...

HTML、CSS学习笔记7(移动适配:rem、less)

一、移动适配 rem:目前多数企业在用的解决方案vw / vh:未来的解决方案 1.rem(单位) 1.1使用rem单位设置尺寸 px单位或百分比布局可以实现吗? ————不可以 网页的根字号——HTML标签 1.2.rem移动适配 写法&#x…...

STM32感应开关盖垃圾桶

目录 项目需求 项目框图 ​编辑 硬件清单 sg90舵机介绍及实战 sg90舵机介绍 角度控制 SG90舵机编程实现 超声波传感器介绍及实战 超声波传感器介绍 超声波编程实战 项目设计及实现 项目需求 检测靠近时,垃圾桶自动开盖并伴随滴一声,2秒后关盖…...

进程跟线程的区别

进程跟线程的区别 文章目录进程跟线程的区别前言一.什么线程二.线程与进程的联系三.线程与进程有什么不同前言 现代所有计算机都能同时做几件事情,当一个用户程序正在运行时,计算机还能同时读取磁盘,并向屏幕打印输出正文.在一个多道操作程序中,cpu由一道程序向另外一道程的切…...

[ICLR 2016] Unsupervised representation learning with DCGANs

目录 IntroductionModel ArchitectureReferencesIntroduction 作者提出了用 CNN 搭建 GAN,使得 GAN 训练更加稳定的一系列准则,并将满足这些设计理念的模型称为 DCGANs (Deep Convolutional GANs). 此外,作者将 trained discriminators 用于图像分类任务,相比于其他无监督算…...

QT编程从入门到精通之十五:“第五章:Qt GUI应用程序设计”之“5.1 UI文件设计与运行机制”之“5.1.2 项目管理文件”

目录 第五章:Qt GUI应用程序设计 5.1 UI文件设计与运行机制 5.1.2 项目管理文件 第五章:Qt GUI应用程序设计 在“Qt 程序创建基础”上,本章将继续深入地介绍Qt Creator设计GUI应用程序的方法...

基于Three.js和MindAR实现的网页端WebAR人脸识别追踪功能的京剧换脸Demo(含源码)

前言 近段时间一直在玩MindAR的功能,之前一直在弄图片识别追踪的功能,发现其强大的功能还有脸部识别和追踪的功能,就基于其面部网格的例子修改了一个国粹京剧的换脸程序。如果你不了解MindAR的环境配置可以先参考这篇文章:基于Mi…...

动态规划思路

拉勾教育版权所有:https://kaiwu.lagou.com/course/courseInfo.htm?courseId3 动态规划思路 1.最优子结构 2.重复计算子机构 3.依靠递归,层层向上传值,所以编程时初始化子结构很重要 动态规划步骤 1.判断动态规划的类型 1.线性规划 >&…...

HTTPS关键词语解释和简单通讯流程

1、 什么是HTTPS HTTPS是基于HTTP的上层添加了一个叫做TLS的安全层,对数据的加密等操作都是在这个安全层中进行处理的,其底层还是应用的HTTP。 2、 什么是对称加密; 加密和解密都是用同一个秘钥 3、 什么是非对称加密; 加密和…...

“前端开发中的三种定时任务及其应用“

前端定时任务是指在一定时间间隔内,自动执行指定的操作或函数。在前端开发中,定时任务被广泛应用于诸如数据更新、定时提醒、定时刷新页面等方面。在本文中,我们将介绍前端中常见的三种定时任务,分别是 setTimeout、setInterval 和…...

华为OD机试题 - 猜字谜(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:猜字谜题目输入输出描述备注示例一输入输出示例二输入输出思路C…...

python@pyside样式化

文章目录refWidget类创建样式化文件qss引用样式并启动应用ref Styling the Widgets Application - Qt for PythonQt Style Sheets Reference | Qt Widgets 5.15.12 Widget类创建 创建一个简单界面(菜单主要内容)它们是水平布局 主要内容包括一段文本和一个按钮,它们是垂直布…...

C++经典15道面试题目(文末含大题)

今天给大家找了几个C面试里很有可能被问的哦,赶紧收藏下来去背!!! 目录 1)C中有malloc/free,为什么还需要new/delete? 2)C中explicit关键字的作用? 3)C中static关键字的作用&a…...

自动计算30天内的股价最高价源代码

我可以回答这个问题。您可以使用以下代码来计算30天内股价的最高价: 复制 import pandas as pd import yfinance as yf # 设置股票代码和日期范围 symbol "AAPL" start_date "2021-01-01" end_date "2021-06-30" # 获取股票…...

国外SEO升级攻略!一看就懂!

SEO是搜索引擎优化的缩写,它是指通过优化网站内容和结构,提升网站在搜索引擎中的排名,从而获得更多的有价值的流量。 而关键词研究和选择是SEO优化中最基础也是最关键的环节,它决定了网站将面向哪些用户、哪些关键词和词组将被优…...

设计模式—适配器模式

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子&#xff0c…...

OpenAI-J 如何进行测试

当你检出 OpenAI-J 项目以后,你可以对 OpenAI-J 进行测试。在测试之前你首先需要获得 OpenAI 的 API Key。OpenAI 的 Key通常是以 sk 开头的字符串。最简单粗暴的办法就是把获得的 key 替换掉上面的字符串,然后进行测试就可以了。运行 Unit 测试在我们的…...

课设-机器学习课设-实现新闻分类

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :课设-机器学习 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,…...

关于异常控制流和系统级 I/O:进程

💭 写在前面:本文将学习《深入理解计算机系统》的第六章 - 关于异常控制流和系统级 I/O 的 进程部分。CSAPP 是计算机科学经典教材《Computer Systems: A Programmers Perspective》的缩写,该教材由Randal E. Bryant和David R. OHallaron 合著…...

Unet 基于TCGA颅脑肿瘤MRI分割(交叉熵损失+多通道输出)

目录 1. 介绍 2. Unet 2.1 unet 代码 2.2 测试网络 3. dataset 数据加载 4. train 训练...

货物摆放(蓝桥杯C/C++省赛)

题目描述 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 nn 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、宽、高。 小蓝希望所有的货物最…...

mysql 索引原理

文章目录 1、索引的本质2、索引的分类2.1、Hash 索引2.2、二叉树2.4、B树(二三树)2.5、B+树3、主键目录4、索引页5、索引页的分层6、非主键索引7.回表1、索引的本质 索引的本质是一种排好序的数据结构。 2、索引的分类 在数据库中,索引是分很多种类的(千万不要狭隘的认为…...

【Linux】文件系统详解

😊😊作者简介😊😊 : 大家好,我是南瓜籽,一个在校大二学生,我将会持续分享C/C相关知识。 🎉🎉个人主页🎉🎉 : 南瓜籽的主页…...

3句代码,实现自动备份与版本管理

前言:服务器开发程序、测试版本等越来越多,需要及时做好数据的版本管理和备份,作为21世界的青年,希望这些事情都是可以自动完成,不止做了数据备份,更重要的是做好了版本管理,让我们可以追溯我们…...

华为OD机试题 - 删除指定目录(JavaScript)| 机考必刷

更多题库,搜索引擎搜 梦想橡皮擦华为OD 👑👑👑 更多华为OD题库,搜 梦想橡皮擦 华为OD 👑👑👑 更多华为机考题库,搜 梦想橡皮擦华为OD 👑👑👑 华为OD机试题 最近更新的博客使用说明本篇题解:删除指定目录题目输入输出示例一输入输出说明Code解题思路华为O…...

3分钟上手,2小时起飞!教你玩转OceanBase Cloud

盼星星盼月亮!掰掰手指,距离 3 月 25 日还有 123456......两周啦🤩~ 除了白天的主论坛和分论坛的精彩分享外,晚间的 3 场 Hands-on Workshop 动手实验营也深得大家期待,从部署到迁移,从 On-Premise 到 Clou…...

location对象详解

location对象 location是最有用的BOM对象之一,它提供了与当前窗口中加载的文档信息,还提供了一些导航功能。既是window对象,也是document对象的属性,即window.location和document.location引用的是同一个对象。它主要的功能有以下…...

【强度混合和波段自适应细节融合:PAN-Sharpening】

Intensity mixture and band-adaptive detail fusion for pansharpening (用于全色锐化的强度混合和波段自适应细节融合) 全色锐化的目的是通过高分辨率单通道全色(PAN)图像锐化低分辨率多光谱(MS)图像&a…...

企业概况的内容/搜索引擎优化seo专员

题目描述&#xff1a;班上有学生若干名&#xff0c;给出每名学生的年龄&#xff08;整数&#xff09;&#xff0c;求班上所有学生的平均年龄&#xff0c;保留到小数点后两位。 输入&#xff1a;第一行有一个整数n&#xff08;1< n < 100&#xff09;&#xff0c;表示学生…...

网站建设好不好/网络广告宣传怎么做

模拟逻辑运算时&#xff0c;感知器的公式是这样的&#xff1a;\[y(x1,x2)f(ω1∗x1ω2∗x2−θ)\] 其中x是输入的值只能取0或1 ω是对应的权值 θ是偏移量 y是输出&#xff0c;y>0为真&#xff0c;小于0为假 也就是说&#xff0c;这个感知器通过学习ω1&#xff0c;ω2&…...

app网页设计网站/长尾关键词爱站

python数据类型数字 字符串 列表 元祖 字典1.为什么要编程 编程的目的是解放人力&#xff0c;这就需要人通过编写程序的方式计算机代替人去自动干活 2.什么是编程语言 编程语言就是人与计算机之间沟通的介质 3.编程语言的分类&#xff1a; 机器语言--》汇编语言--》高级语言 1.…...

个人网站怎么命名/google关键词排名优化

前几天boss让做一个PR&#xff0c;一脸懵逼&#xff0c;查资料问同事&#xff0c;最后还被boss批&#xff0c;终于提交了PR。 PR&#xff0c;全程pull Request &#xff0c;下面写一下提交过程和我遇到的坑。 项目背景&#xff1a;一个开源项目&#xff0c;我自己创建了一个分…...

襄阳市网站建设/东莞网络优化排名

在这个世界上 一年里要花240兆亿元 每天发生着战争 有被卷入战争的孩子和亲自拿着枪战争的孩子 和我一样年龄的女孩子 做着走在士兵前试探地雷的工作 我和那些孩子有什么不一样呢&#xff1f; 明明有因为没食物而死的人 却还有扔掉食物的人 即使下一秒足球场上的绿地…...

wordpress 小蘑菇/yandx引擎入口

产品经理面试的常见问题有哪些呢 1、简单的先做个自我介绍 好的自我介绍&#xff0c;主要凸显两件事就 OK 了 第一&#xff1a;我是能做产品经理的&#xff1b; 第二&#xff1a;我想在你们这家公司做产品经理。 我是能做产品经理的该怎么证明呢&#xff1f;通过两个维度&…...