【C++学习笔记】this指针

18 篇文章 6 订阅
8 篇文章 1 订阅

this指针是什么

每一个类的成员函数都有一个隐藏定义的常量指针,我们把它称为this指针。
this指针的类型就是成员函数所属的类的类型。
每当调用成员函数时,它被初始化为被掉函数所在类的对象的地址。也就是自动地将对象的指针传给它。不同对象调用同一个成员函数时,编译器将根据成员函数的this指针所指的对象来确定应该引用哪个对象的数据成员。

这段定义的意思是在成员函数内都隐含这一个指向自己类的对象的指针,这个指针帮助了编译器,在同一个类的不同对象调用同一个成员函数时,知道应该引用哪一个对象的数据成员。
例:

float Box::volume(){return heightwidthlength;}
等价于
float Box::volume() {return this->heightthis->widththis->length;}

可以简单理解,this指针是成员函数能够区别于一般函数能够访问函数内部成员的一个原因!

注意事项

1 this指针是一个常指针不是一个指向常数的指针。这代表了this指向的地址是不能变的,但是this所值的对象的值是可以发生改变的
2. this指针是一个局部数据,它的作用域仅在一个对象的内部。
3. this指针可以直接访问该类中所有权限的数据成员,通过this->类内成员名**,可以访问任意权限的数据成员(包括private)**
4. this指针只有,是只有类的动态成员函数才有,其他什么静态函数,友元函数统统没有this指针。

this指针的存在形式

(1)隐式存在this指针是隐藏使用的,它是作为参数被传递给成员函数的。
有点类似在成员函数定义时,每个成员函函数参数表中有一个缺省:

 float Box::volume(Box const *this=对象的地址,int height,int width,int length){return height*width*length;} 

(2)自动实现:是编译系统自动实现的,程序设计者不必人为在形参中添加this指针,不必将a的地址传递给this指针。(上面那个例子只是方便理解,在实际定义成员函数过程中,不需要说明this指针。)

(3)*this 表示当前对象本身。this->width等价于(*this).width

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值