每一个非静态成员函数都只会生成一个函数实例,所以多个同类型对象会公用一块代码。
这一块代码如何区分不同的对象呢?
C++通过特殊的指针this指针来解决这个问题。
this指针指向被调用的成员函数的对象。
举例:
一个男生(函数)脚踏三条船,他同时如何处理三个女生?(被三个对象调用),满足三个女生的不同要求(执行函数)
this指针的具体操作:
1.形参和成员变量重名
2.类的非静态函数中返回对象本身,可以使用return *this
class Person {
public:
Person(int age){
//如果我们写age=age;此时形参月成员变量重名肯定是不行的
this ->age =age;//前面的是由this指针指向的对象内的age
}
voia test(){
Person p(18);
cout<<p.age<<endl;
}
private:
int age;
};
class Person {
public:
Person(int age){
this ->age =age;
}
void PersonAdd (Person &p){
this->age+=p.age;//计算两个人的年龄值得和,this函数返回了自身对象
return *this;
}
void test (){
Person p1(10);
Person p2(20);
p2.PersonAdd(p1).PersonAdd(p1).PersonAdd(p1);
/*因为PersonAdd这个函数最后的返回值是this指针所以就是返回了对象本身所以可以连续进行调用
*/
cout<<p2.age;
}
}
private:
int age;
};
以上就是this指针的两种实例