12.3.2 this指针
我们知道,类的成员函数不会增加内存,这是因为虽有的类对象都共享一个成员函数。那么不同的对象去调用这一个成员函数,怎么知道是谁调用的?
这时,this指针就发挥了作用。
this指针指向被调用的成员函数所属的对象。这样,如果p1调用,那么成员函数中的所有内容都属于p1对象。
this指针有下面常用用途:
1、解决名称冲突
例如,我们在写构造函数时,如果形参名称跟成员属性名称相同,则会出现混淆,可以在成员属性前加上this指针。
class person
{
public:
int age;
person(int age)
{
//指向被调用的函数所属的对象
this->age = age; //解决名称冲突
}
}
2、在非静态成员函数返回对象本身,用return *this;
class person
{
public:
int age;
person(int age)
{
this->age = age;
}
person& personAddAge(person &p)
{
this->age += p.age;
return *this;
}
};
这个personAddAge函数的意思是把自身的年龄加上传入对象的年龄,并且返回自身对象。为什么要返回自身对象呢?这样可以连续调用多次函数。
这是一种链式编程思想。
像 cout<<“asd”<<endl; 就是链式编程思想。
int main()
{
person p1(10);
person p2(10);
//链式编程思想
p2.personAddAge(p1).personAddAge(p1).personAddAge(p1);
cout << p2.age << endl;
system("pause");
return 0;
}
这里p2连续调用了三次函数,所以最后p2的年龄应为40。