每一个非静态成员函数只会诞生一份函数实例,也就是说多个类型的对象会共用一块代码
- C++通过提供特殊的对象指针,this指针,解决上述问题。this指针指向被调用的成员函数所属的对象
注意:
- this指针是隐含每一个非静态成员函数内的一种指针
- this指针不需要定义,直接使用即可
用途
- 当形参和成员变量同名时,可用this指针来区分
- 在类的非静态成员函数中返回对象本身,可使用return *this
解决名称冲突
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 
 | #include<iostream>using namespace std;
 
 class Person {
 public:
 
 Person(int age) {
 this->age = age;
 
 
 int age;
 };
 
 int main() {
 Person p1(18);
 cout << "p1的年龄:" << p1.age;
 return 0;
 }
 
 | 
返回对象本身用*this
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 
 | #include<iostream>using namespace std;
 
 class Person {
 public:
 
 Person(int age) {
 this->age = age;
 }
 
 Person& PersonAddAge(Person &p) {
 this->age += p.age;
 return *this;
 }
 
 int age;
 };
 
 int main() {
 Person p1(10);
 Person p2(10);
 p2.PersonAddAge(p1).PersonAddAge(p1);
 cout << "p2的年龄:" << p2.age;
 return 0;
 }
 
 |