this指针

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
p1 的年龄:10
p2 的年龄:30
  • 上述代码部分修改为
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;
}

运行结果为:

1
p2.age:10

注解:以值方式返回时,会重新拷贝一个对象,这个对象并不指向调用这个函数的对象自身。