- this指针工作原理:
c++的数据和操作也是分开存储,并且每一个非内联成员函数(non-inline member function)只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码
那么问题是:这一块代码是如何区分那个对象调用自己的呢?
c++通过提供特殊的对象指针,this指针,解决上述问题。This指针指向被调用的成员函数所属的对象。
-
总结C++中的this指针特性:
- this指针永远指向当前对象 。
- this指针可以解决命名冲突问题。
- *this 指向调用对象本体。
- 非静态的成员函数才有this指针。
-
接下来举一个实例,使用C++中的this指针来实现链式编程。
#include <iostream>
class Person {
public:
Person():m_age(0){};
Person& add(int a){
m_age = m_age + a;
return *this;
}
void print() {
std::cout << "age = " << m_age << std::endl;
}
private:
int m_age;
};
int main() {
Person p;
p.add(1).add(2).add(3);
p.print();//这里最终输出“age = 6”
return 0;
}