目录
一、this指针概述
概述: this指针指向被调用的成员函数所属的对象即this指针指向当前对象的地址。它在类的成员函数中可用,用于访问当前对象的成员变量和成员函数。this
指针是隐式传递给每个成员函数的,你不需要显式地声明或传递它。
用途:
-
用于在成员函数中访问当前对象的成员变量和成员函数。
-
用于在函数参数和成员变量之间解决命名冲突。
-
在类的非静态成员函数中返回对象本身,可使用return *this
实例
#include <iostream>
using namespace std;
class Person
{
public:
Person(int age) // 构造函数
{
this->age = age; // 1、当形参和成员变量同名时,可用this指针来区分
}
void PrintfAge(void)
{
cout << "年龄为:" << this -> age << endl; // 2、在成员函数中访问当前对象的成员变量
}
Person& PersonAddPerson(Person p) // 3、在类的非静态成员函数中返回对象本身
{
this->age += p.age; // 把传进来的p上的age 与本对象的age 相加
return *this; // 返回对象本身 // 实现链式调用
}
int age;
};
void test01()
{
Person p1(10);
p1.PrintfAge();
Person p2(10);
// 链式编程的实现
p2.PersonAddPerson(p1).PersonAddPerson(p1).PersonAddPerson(p1);
cout << "p2.age = " << p2.age << endl;
}
int main()
{
test01();
return 0;
}
结果
年龄为:10
p2.age = 40
代码33行链式编程的实现过程:
①p2.PersonAddPerson(p1).PersonAddPerson(p1).PersonAddPerson(p1);
②代码从左往右先调用p2.PersonAddPerson(p1)
此时成员函数运行把p1里的age和p2里的age相加,然后返回本身即返回的为p2
③ 代码变成p2.PersonAddPerson(p1).PersonAddPerson(p1)
④然后重复上面的运算步骤p2.PersonAddPerson(p1)
注意此时p2中age的值经过上次的运算已经更改为20,然后再次返回本身p2
⑤代码变成p2.PersonAddPerson(p1)
⑥再次重复上面运算的步骤 注意此时p2中age的值经过上次的运算已经更改为30再次运算后p2的age值已改为40
二、 this指针总结
-
this 是 const 指针,要用
->
来访问成员变量或成员函数,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的。 -
this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的。通过 this 可以访问类的所有成员,包括 private、protected、public 属性的
-
只有当对象被创建后 this 才有意义,因此不能在 static 成员函数中使用(后续会讲到 static 成员)。
-
this 指向当前对象,对于不同的对象,this 的值也不一样。
三、链式编程思想
-
链式编程是一种通过在同一个对象上多次调用其成员函数或操作,以形成连续链式操作的编程模式。
-
链式编程通常用于类设计中,其中每个成员函数返回对象自身的引用,以便可以在同一个对象上连续调用其他函数。
-
使得可以在同一个对象上连续调用它们,而不必分开引用对象。
四、跳转链接
上一篇:C++静态成员详解
https://blog.csdn.net/qq_61692089/article/details/134145068?spm=1001.2014.3001.5501
下一篇:C++ 友元详解
https://blog.csdn.net/qq_61692089/article/details/134178784?spm=1001.2014.3001.5501