Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >C++ this指针

C++ this指针

作者头像
全栈程序员站长
发布于 2022-08-30 01:21:45
发布于 2022-08-30 01:21:45
6480
举报

大家好,又见面了,我是你们的朋友全栈君。

this 指针

引言: 首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。 注意: this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于使用this指针的成员函数类型以及对象类型,

一、this指针的概念

  1. 定义 在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
  2. this只能在成员函数中使用 成员函数默认第一个参数为T* const register this。 (友元函数,全局函数不是成员函数)
  3. this指针不能再静态函数中使用 静态函数如同静态变量一样,他不属于具体的哪一个对象,静态函数表示了整个类范围意义上的信息,而this指针却实实在在的对应一个对象,所以this指针不能被静态函数使用。
  4. this指针的创建 this指针在成员函数的开始执行前构造的,在成员的执行结束后清除。
  5. this指针只有在成员函数中才有定义。 创建一个对象后,不能通过对象使用this指针。也无法知道一个对象的this指针的位置(只有在成员函数里才有this指针的位置)。当然,在成员函数里,你是可以知道this指针的位置的(可以&this获得),也可以直接使用的。

二、this指针的操作

在类的非静态成员函数中返回类对象本身的时候,我们可以使用圆点运算符*,箭头运算符->。

实现级联

关于this指针的一个精典回答:

当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针, 它时时刻刻指向你这个实例本身。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145221.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】自引用this指针的秘密
当我们在进入一个房子之后,可以看见房子里的桌子、椅子、地板等,但是看不到房子的全貌。对于一个类的实例来说,你可以看到它的成员函数、成员变量,但是实例本身呢?this是一个指针,它时时刻刻指向这个个实例。
全栈程序员站长
2022/08/29
9220
【C++】自引用this指针的秘密
this指针用法
 this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子:     void Date::setMonth( int mn )     {      month = mn; // 这三句是等价的      this->month = mn;      (*this).month = mn;     }
全栈程序员站长
2021/08/09
4640
C++的this指针
当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。
全栈程序员站长
2022/08/29
6550
C++中this指针的作用以及用法详解
当我们在类中定义了一个变量,同时又在类成员函数中定义了同一个变量时,也就是变量名重复时,但是我们要想使用类中的定义的变量,此时就需要this指针了。
全栈程序员站长
2022/08/27
4850
this指针的介绍和用法
this指针是面向对象程序设计的一项概念,在C++中,它表示当前运行的对象。在实现对象的方法时,this指针来获得该对象自身的引用。
全栈程序员站长
2022/08/29
5730
this指针的介绍和用法
【C++】类与对象(下)
对于代码来说,许多函数并不需要对自己的内置成员函数做出修改,甚至一旦修改就会有不和逻辑的事情产生。而且对于C++来说用const修饰this指针,普通对象和const对象都能调用;(若普通对象调用该函数会产生权限缩小的现象产生,这种权限的缩小是我们所允许的)
薄荷冰
2024/01/22
1380
【C++】类与对象(下)
C++中this指针的理解和用法
当你进入一个房子后, 你可以看见桌子、椅子、地板等, 但是房子你是看不到全貌了。 对于一个类的实例来说, 你可以看到它的成员函数、成员变量, 但是实例本身呢? this是一个指针,它时时刻刻指向你这个实例本身。
全栈程序员站长
2022/08/29
7880
【C++】类和对象核心总结
a. 在C语言阶段我们就已经认识到了结构体,它可以帮助我们实现多种数据结构,功能强大不言而喻。在C++中为了更好的封装,以及更好的将现实生活抽象化为计算机世界,采用面向对象的思想帮助程序猿能够对用户需求进行抽象思维化,不得不需要类class的出现。
举杯邀明月
2023/04/12
8320
【C++】类和对象核心总结
【C++ 初阶路】--- 类和对象(末)
将const修饰的“成员函数”称之为const成员函数,const修饰类成员函数,实际修饰该成员函数隐含的this指针,表明在该成员函数中不能对类的任何成员进行修改。
用户11029269
2024/07/01
1230
【C++ 初阶路】--- 类和对象(末)
【C++】类与对象【下】
初始化列表: 以一个冒号开始,接着以逗号分隔数据的成员列表,每个成员变量后面跟一个放在括号中的初始值或表达式,初始化完之后,结尾处要有一个“{}”的结束符号
用户11367452
2025/05/15
500
【C++】类与对象【下】
C++进阶之路:再谈构造函数、static成员、友元(类与对象_下篇)
虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,
Srlua
2024/10/23
1200
C++进阶之路:再谈构造函数、static成员、友元(类与对象_下篇)
C++学习————第四天(类、this指针)
C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。
IsLand1314
2024/10/15
1470
C++学习————第四天(类、this指针)
【C++类和对象(下)】——我与C++的不解之缘(五)
2、引用成员变量 、const成员变量和没有默认拷贝构造的类类型变量必须使用初始化列表 :
星辰与你
2024/10/17
1040
【C++类和对象(下)】——我与C++的不解之缘(五)
【C++】剖析static关键字&&友元
static,在英语单词中译为静态,静态的意思。当然,在这个从C至C++的关键词都发挥着非凡的作用的关键词的用法上,相信还是有很多小伙伴摸不着头脑,我也不例外,总是用得我抓耳挠腮,一点头绪都无。
用户11456817
2025/01/22
1150
【C++】剖析static关键字&&友元
QT中this指针
一:this指针只能在一个类的成员函数中调用,它表示当前对象的地址。下面是一个例子:
全栈程序员站长
2022/08/29
7470
this指针用法及其深究
今天,码神像一个新车手一样,尝试着用模板来更新一下,不要建议哦,毕竟没有放弃爱情的拓海也不是真正的车神,哈哈,发车了
秋名山码神
2022/12/13
2840
this指针用法及其深究
C++从入门到精通——static成员
声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化。
鲜于言悠
2024/04/21
6130
C++从入门到精通——static成员
this指针小总结
在C++中,this指针是一个隐式的、非静态的成员指针,它指向调用它的对象的地址。每个非静态成员函数都含有一个this指针,该指针在成员函数中用于访问调用它的对象的成员。
ljw695
2024/10/18
1490
【C++】类和对象——Lesson2
当运算符被用于类类型的对象时,C++允许我们通过运算符重载的形式指定新的定义。C++规定类类型对象使用运算符时,必须转换成调用对应运算符重载,若没有对应的运算符重载,则会编译报错。
_小羊_
2024/10/16
700
【C++】类和对象——Lesson2
C++ 知识点总结篇
const 在不同位置时的不同意义 指针类型前:声明一个指向常量的指针,程序中不能通过指针来改变它所指向的值,但指针本身的值可以改变,即指针可以指向其他数据; "*"号和指针名之间,声明一个指针常量(常指针),指针本身的值不可改变,即不能指向其他数据,但指向的数据的值可以改变; 两个地方都加,声明指向常量的指针常量,指针本身的值不可改变,指向的数据也不能通过指针改变; 函数指针 使用函数指针之前,必须先赋值,使它指向一个函数入口地址,赋值语法格式为:函数指针名 = 函数名,其中函数名代表的函数必须是一个已经
村雨遥
2022/06/15
5360
C++ 知识点总结篇
相关推荐
【C++】自引用this指针的秘密
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档