This指针的作用

1、用于区分参数和成员变量同名的情况

比如下面这段代码中:

class Person
{
public:

	Person& Person_age_add(Person & p)
	{
		this->m_age += p.m_age;
		return *this;
	}   
	//当需要返回对象的时候,我们通常是需要返回当前对象,可以通过return * this的方式,同时注意类应当是引用

	Person(int m_age)
	{
		this->m_age = m_age;       //this是指向调用该方法的对象的一个指针,这个是this 的第一个作用
	}//当形参和成员变量名称相同的时候,可以用this指针进行区分
	int m_age;
};

在定义构造函数时,参数和成员变量m_age重名了,如果不用this指针进行说明,编译器很难区分哪一个是参数,哪一个是成员变量的,但是This指针具有指向调用该方法的对象的作用,用this指针说明对象可以防止歧义。

2、用于返回对象

当我们定义了一个人对象p1,在调p1的某一个方法之后,我们希望返回的还是p1这个对象的本体(或者说是本身),那么应该怎么做呢?
需求:
1、定义一个人类,构造方法初始化年龄
2、定义一个成员函数,输入参数是一个对象,作用是将对象的年龄加到本体的年龄上面,返回调用该函数的对象。
3、以上的编程需求在于链式编程思想。
代码如下:

public:

	Person& Person_age_add(Person & p)
	{
		this->m_age += p.m_age;
		return *this;
	}   

这里需要说明两个点,this是指向调用该函数的对象的一个指针,对这个指针进行解引用是对象本身,返回的是没有内容的,及欲返回的是p1本身。
2、为什么要加引用,我们换一种思想,倘若不加引用,进行值的返回,那么编译器会另外开辟一块空间,完整的将p1的数据考本一份,那个空间就是你调用函数是想要接受的函数名,而我们的需求是返回的调用该方法的对象的本身。加了&之后再调用的过程为:

Person & q = * this //其中this 指向q1;

也就说,返回的还是q1本身,只不过换了个别的名称而已。
关于返回值要不要加引用的问题以及一些坑,后面不记得的话查一查黑马程序员的视频。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值