C++中this指针的理解和作用

C#中的this关键字:详解与使用 阅读详情

 01、C++程序到C程序的翻译

想要理解C++语言中的this指针,下面我们做一个举例,我们要先把下面的C++代码转换成C代码:

(1)大家知道,C语言中没有类定义class关键词,但是有跟class类似的定义关键词,就是struct结构体定义。

m_height变量是Tree类的成员变量,那么我们就可以把Tree类和成员变量翻译成下面的C代码:

图片

(2)SetHeight函数是Tree类的成员函数,但是C程序里面没有成员函数这个概念的,所以只能把成员函数翻译成全局的函数:

图片

那为什么还要再加个this指针呢?我们接着继续往下看。

(3)接下来把C++中的main函数翻译成C程序,是下面这样的:

图片

所以最终把上面的C++程序转变为C程序的代码如下:

图片

加上SetHeignt函数的第一个参数this指针的作用,就是为了给结构体Tree域里的变量赋值。

02、this指针的作用

this指针的作用就是指向成员函数所作用的对象,所以非静态成员函数中可以直接使用this来代表指向该函数作用的对象的指针。

03、this指针和静态成员函数

静态成员函数不能使用this指针,因为静态成员函数相当于是共享的变量,不属于某个对象的变量。

04、小结

(1)通过将C++程序翻译成C程序的方式,来理解this指针,其作用就是指向非静态成员函数所作用的对象,每个成员函数的第一个参数实际上都有个默认this指针参数;

(2)静态成员函数无法使用this指针。

C++学习笔记 【代码】C++学习笔记。 阅读详情

相关推荐

C++中的this指针:理解和使用

C++中的this指针:理解和使用在C++编程语言中,this指针是一个特殊的指针,它指向当前对象的地址。通过使用this指针,我们可以在类的成员函数中访问当前对象的成员变量和成员函数,以及进行对象之间的比较和赋值操作。本文将详细介绍this指针的概念、用法和示例代码。

m0_47037246的博客 127

this指针

this是一个指针,它时时刻刻指向你这个实例本身。你可以看到它的成员函数、成员变量,this指针本质上是“成员函数”的形参。你可以看见桌子、椅子、地板等,静态成员函数中不能使用this指针。但是房子你是看不到全貌了。对于一个类的实例来说,当你进入一个房子后,不能给this指针赋值。

m0_63783532的博客 8503

Waymo数据集里的隐藏彩蛋:5个激光雷达数据融合实战(附Python代码)

本文深入解析Waymo数据集中5个激光雷达的数据融合技术,提供Python实战代码,帮助开发者掌握多传感器协同工作的关键方法。通过时间同步、坐标转换和运动补偿等技术,实现高精度3D场景重建,提升自动驾驶系统的环境感知能力。

weixin_30399821的博客 82

C++中的This指针

一、This指针的介绍     C++中使用This指针来指向用来调用成员函数的对象。一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函

u012103747的专栏 2880

信号完整性分析学习--16--传输线效应

传输线效应 说到传输线效应,大多数人都会想到一个经验法则,那就是: “当互连线的长度大于1/6倍的信号上升时间的空间延伸时,互连线就体现出传输线效应。” 上升时间越小越容易体现传输线效应。 由此可见,同一根互连线,它是否体现传输线效应,要看它要传输什么样的信号。下图所示,一根延时为15ps的互连线,当它传输上升时间为60ps的信号时就会体现传输线效应;当它传输上升时间为180ps的信号时就不体现传输线效应。

qq_29476769的博客 7281

C++this指针的用途

this指针的用途: 1.当形参和成员变量同名时,可用this指针来区分。 2.在类的非静态成员函数中返回对象本身,可使用return *this 每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码,那么问题是: 这一块代码是如何区分哪个对象调用自己的呢? C++通过提供特殊的对象指针,this指针解决上述问题。 对象p1,p2,p3都要调用这个函数,怎么区分是谁调用的呢? 用this指针解决这个问题 this指针指向被调用的成员函数所属的对象 简单来说,谁调用这个函数,th

m0_51955470的博客 3435

智能座舱架构与芯片- (10) 音频篇 下

若将有限个 量化样值的绝对值从小到大依次排列,并对应地依次赋予一个十进制数字代码(例如,赋予样值0的十进制数字代码为0),在码前以“+”、“-”号为前缀,来 区分样值的正、负,则量化后的抽样信号就转化为按抽样时序排列的一串十进制数字码流,即十进制数字信号。如果声学密封不牢,来自内部结构的噪声可能到达传感器,两个传感器之间的泄漏可能降低BF算法的性能。未来,随着汽车电动化的普及,传统的ANC降噪所针对的发动机噪音已经不复存在,而路噪问题将越发明显,因此,全新的RNC主动路噪消减技术将会有一个更为宽广的市场。

joanna_xiao的博客 3843

C++ this指针的理解和作用

01 C++ 程序到 C 程序的翻译 要想理解 C++ 的 this 指针,我们先把下面的 C++ 代码转换成 C 的代码 class Car { public: int m_price; // 成员变量 void SetPrice(int p) // 成员函数 { m_price = p; } }; int main() { Car car; car....

小林coding 2222

RK3576的ISP和VPSS图像处理能力实测:对比海思方案能做什么?

本文深度评测了RK3576芯片的ISP和VPSS图像处理能力,并与海思方案进行对比。测试显示,RK3576在MIPI接口灵活性、多路视频支持、HDR动态范围和降噪效果等方面表现优异,特别适合智能视觉和安防监控应用。通过实测数据展示了其在低照度、高动态范围等复杂场景下的卓越性能。

weixin_42713608的博客 265

交换机背板带宽、交换容量与包转发率到底是啥?

在网络工程中,交换机是核心设备之一,而关于它的性能指标,背板带宽、交换容量、以及包转发率往往成为人们衡量其性能的重要参数。这些术语的定义、关系、以及在实际场景中的应用,都对交换机的选型与部署有着重要意义。本文将为您全面解读这些概念,帮助您深入了解交换机的核心性能指标。

网络技术联盟站 1551

this指针_C++ this指针的理解和作用

来自公众号:小林codingC++程序到 C 程序的翻译要想理解 C++ 的 this 指针,我们可以先把下面的 C++ 代码转换成 C 代码:C 语言是没有类定义 class 关键词,但是有跟 class 类似的定义,那就是 struct 结构体。m_price 变量是 Car 类的成员变量,那么我们可以把 Car 类和成员变量翻译成如下的 C 代码:SetPrice 函数是 C...

weixin_39602637的博客 202

在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案

本文主要介绍了在windows系统上使用codex出现应用程序无法正常启动(0xc0000022)的解决方案,希望能对使用codex的同学们有所帮助。 文章目录 1. 问题描述 2. 原因分析 3. 解决方案

weixin_43178406的博客 10万+

springboot 对象 空指针_C++ this指针的理解和作用

C++程序到 C 程序的翻译要想理解 C++ 的 this 指针,我们可以先把下面的 C++ 代码转换成 C 代码:C 语言是没有类定义 class 关键词,但是有跟 class 类似的定义,那就是 struct 结构体。m_price 变量是 Car 类的成员变量,那么我们可以把 Car 类和成员变量翻译成如下的 C 代码:SetPrice 函数是 Car 类的成员函数,但是 C...

weixin_39889544的博客 125

Python3实现基于ARIMA模型来预测茅台股票价格趋势

ARIMA(Autoregressive Integrated Moving Average)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。具体来说,ARIMA模型可以通过以下步骤进行建模:数据预处理:对时间序列进行平稳性检验,如果不满足平稳性,则进行差分操作。

m0_64336780的博客 2万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

c语言中跟this指针功能相同的,C++ this指针的理解和作用

01 C++ 程序到 C 程序的翻译要想理解 C++ 的 this 指针,我们先把下面的 C++ 代码转换成 C 的代码class Car{public:int m_price; // 成员变量void SetPrice(int p) // 成员函数{m_price = p;}};int main(){Car car;car.SetPrice(20000); // 给car对象m_...

weixin_42497772的博客 278

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

cgo 结构体指针_C++ this指针的理解和作用

01 C++ 程序到 C 程序的翻译要想理解 C++ 的 this 指针,我们先把下面的 C++ 代码转换成 C 的代码class Car { public: int m_price; // 成员变量 void SetPrice(int p) // 成员函数 { m_price = p; } }; int main() { ...

weixin_39895977的博客 149

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

已知p是一个指向类a的数据成员m的指针_C++ this指针的理解和作用

01 C++ 程序到 C 程序的翻译要想理解 C++ 的 this 指针,我们先把下面的 C++ 代码转换成 C 的代码class C 语言是没有类定义的class关键词,但是有跟class类似的定义,那就是结构体struct。m_price变量是Car类的成员变量,那么我们可以把Car类和成员变量翻译成如下的 C 代码:// 结构体Car SetPrice函数是Car类的成员函数,但是 C 程序...

weixin_39557087的博客 391

C++中类成员函数中的this指针

先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this 就是指向my的指针。如果还有一个变量myclass mz,mz的this就是指向mz的指针。 这样就很容易理解...

zy20150613的博客 8626

C++ this指针详解

C++this指针操作 在这里总结一下this 指针的相关知识点。   首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。注:this指针并不是对象的一部分,this指针所占的内存大小是不会反应在s

追尋ゝ 2564

this指针的理解

1.C++的类成员函数中,默认都隐含了一个this指针,标识调用该成员函数的对象,每个成员函数的第一个参数实际上都是有个默认 this 指针参数; 2.为什么需要有一个this指针呢?C++设计这个机制的初衷是什么呢? 我们知道,普通的C++类,其成员函数是类的所有对象共享的,而数据是每个对象所独有的.即:数据独有,方法共享 因此在调用类的某个成员方法(非静态方法)时,我怎么知道是哪个对象调用的呢...

weixin_43223362的博客 332

【C++】this指针

this的理解

2301_78636079的博客 806

【C++】C++中的 `this` 指针:深度探索和应用

本文的目的是深入探讨 this 指针的使用,包括其基本理解、实际应用、使用限制以及在不同编程场景中的作用。我们将从基础概念开始,逐步深入,包括 this 指针在成员函数中的使用、解决变量命名冲突、实现链式调用、在继承和多态中的作用、const 成员函数中的特殊行为、多线程编程中的应用等。通过本文,读者将对 this 指针有更全面的理解,并能够正确而有效地使用它来改进自己的 C++ 代码。

crr411422的博客 1万+

C++ this指针深度解析

一、C++ 程序到C程序的翻译 C++ 是在C语言的基础上发展而来的,第一个 C++ 的编译器实际上是将 C++ 程序翻译成C语言程序,然后再用C语言编译器进行编译。C语言没有类的概念,只有结构,函数都是全局函数,没有成员函数。翻译时,将 class 翻译成 struct、对象翻译成结构变量是显而易见的,但是对类的成员函数应该如何翻译?对myCar.Modify();这样通过一个对象调用成员函数...

love、reading的博客 703

c++ this 指针详解

首先来观察一段代码: class MyClass { int m_data; public: MyClass(int d = 0) : m_data(d) {} int data() const { return m_data; } }; void tmyclass() { MyClass obj1; MyClass obj2(100); cout << obj1.data(

hmalloc的专栏 1153

一文让你透彻理解 C++中的this指针

1 为什么需要this 指针? 现在我们封装了一个类,这个类里有成员变量,也有成员函数。现在我们用类来实例化一个对象。现在我们实例化出来的对象要调用类中的成员函数,但是,我们的实例化该怎么去调用访问函数呢? C++ 中每个成员函数的参数中都有一个指针形参,这个指针形参就是this指针,我们的实例化对象在调用成员函数的时候,将自己的地址作为实参,拷贝一份传给成员函数中的this指针,然后,实例...

zwq68的博客 250
上一篇: Python实现手势识别
下一篇: DDD为什么能火起来?和微服务有啥关系?
程序员小六
博客等级 码龄6年 111粉丝 5原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值