C++笔记 this指针用法

 一、this指针
引言:
首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址

定义:
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
注意事项:
1、this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于使用this指针的成员函数类型以及对象类型,

2、this指针在成员函数的开始执行前构造的,在成员的执行结束后清除。

/*   2022   04  05  */

/*  this 指针 出现背景:  */
//  当成员函数的形参名字和数据成员相同的时候,容易产生二义性
//  this指针   通指  所有对象本身  的地址
//  对象存在,this指针才能存在





/*  this 指针定义 */
//  在C++中,每一个对象都能通过 this 指针来访问自己的地址。
//  this指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
#include<iostream>
#include<string>
using namespace std;
class GrilFriend
{
public:
	//  当成员函数的形参名字和数据成员相同的时候,容易产生二义性
	void setData(string name, int age)
	{

		// 1、类名限定
		GrilFriend::name = name;
		GrilFriend::age = age;
		// 2、用this表示对象的属性
		cout << "this=    " << "\t"  << this << endl;
		this->name = name;
		this->age = age;
	}
	void print()
	{
		cout << "name=" << name << "\t" << "age=" << age<< endl;
	}


	/* this指针的用途  */
	// 1、返回对象本身的成员函数
	GrilFriend returnGrilFriend()
	{
	
		return *this;
	
	
	
	}


	// 2、返回对象地址的成员函数
	GrilFriend *returnGrilFriendPoint()
	{
	
		
	
		return this;
	
	
	}








protected:
	string name = "baby";
	int age = 18;


private:






};

void test01()
{
	GrilFriend xf;
	cout << "对象xf的地址:" << &xf << endl;
	xf.setData("小芳",20); // this  &xf	
	xf.print();
	

	cout << endl;
	GrilFriend baby;
	cout << "对象baby的地址:" << &baby << endl;
	baby.setData("baby", 22);// this &baby
	baby.print();




	baby.returnGrilFriend().returnGrilFriend().returnGrilFriend().print();

	baby.returnGrilFriendPoint()->returnGrilFriendPoint()->print();

	




}












int main()
{

	

	test01();
	system("pause");
	return 0;
}

























































 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Love coldplay

你的鼓励,将让我持续更新

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值