this 指针
每个非静态成员函数只会诞生一份函数实例,即多个同类型的对象会共用一块代码
c++通过提供 this 指针指向被调用的成员函数所属的对象。
this 指针是隐含每一个非静态成员函数内的一种指针
用途:
(1)当形参和成员变量同名时,可用this指针来区分
(2)在类的非静态成员函数中返回对象本省,可使用 return *this
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #include<iostream> using namespace std; class Person { public: int age; Person(int age) { this->age = age; } Person& PersonAddAge(Person& p) { this->age += p.age; return *this; } }; void test01() { Person p1(10); cout << "p1 的年龄:" << p1.age << endl; } void test02() { Person p1(10); Person p2(10); p2.PersonAddAge(p1).PersonAddAge(p1); cout << "p2 的年龄为:" << p2.age << endl; } int main() { test01(); test02(); return 0; }
|
运行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| #include<iostream> using namespace std; class Person { public: int age; Person(int age) { this->age = age; } Person PersonAddAge(Person& p) { this->age += p.age; return *this; } }; void test02() { Person p1(10); Person p2(10); cout << "p2.age:" << p2.age << endl; } int main() { test02(); return 0; }
|
运行结果为:
注解:以值方式返回时,会重新拷贝一个对象,这个对象并不指向调用这个函数的对象自身。