问题:
在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指针是隐式使用的,它是作为参数被传递给成员函数的。
原定义: