C++ this指针详解(10)

目录

一、this指针概述

二、 this指针总结

三、链式编程思想

四、跳转链接


一、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++静态成员详解icon-default.png?t=N7T8https://blog.csdn.net/qq_61692089/article/details/134145068?spm=1001.2014.3001.5501

下一篇:C++ 友元详解icon-default.png?t=N7T8https://blog.csdn.net/qq_61692089/article/details/134178784?spm=1001.2014.3001.5501

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值