this指针


问题:

在ROS或C++开发过程中,经常会看到this指针的身影。那么为什么要用this指针,他是干什么用的呢?


参考答案:

背景:每个对象中的数据成员都分别占有存储空间,如果对同一个类定义了n个对象,则有n组同样大小的空间以存放n个对象中的数据成员,但是不同的对象都调用同一个函数的目标代码。

冲突:当不同对象的成员函数应用数据成员时,怎么能保证应用的是指定的对象的成员呢?都用同一个函数代码,系统如何区别不同对象的中的数据成员呢?

解释:每一个成员函数都包含一个特殊的指针,这个指针的名字是固定的,称为this。
他是指向本类对象的指针,他的值是当前被调用的成员函数所在对象的起始地址
例如,当调用成员函数a.volume时,编译系统就把对象a的起始地址赋给this指针,于是在成员函数引用数据成员时,就按照this的指向找到对象a的数据成员。比如volume函数计算height * width * length的值,实际执行(this->height)(this->width)(this->length)。
this指针是隐式使用的,它是作为参数被传递给成员函数的。

原定义:


                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值