This指针的概念

1.this指针指向当前调用函数的对象

在上图的这个代码中,一个成员函数却有两个数据类型一样的对象在调用它,这个时候如何区分是那个对象在调用它呢,编译器中有一个隐含的This指针,当p1在调用函数的时候,那么This指针指向的就是p1这个对象,p2同理。我们最后是使用的p2调用的函数,现在This指针指向的对象就是p2,

this指针的作用,解决名称冲突的作用(形参和属性的名称冲突,这时候编译器会懵逼),解决方法就是使用this指针,这时候因为是p1在调用有参构造函数,所以现在this是指向p1,然后在将形参赋值给this.age,也就是p1.age,编译器就能识别出来前面的age是属性的age,而不会与后面的形参起冲突

2.this指针返回对象本身用*this的案例

注意,我们上面创建了一个ageAdd的函数,形参是一个引用p其数据类型为person,我们用p2来调用这个函数,所以当前this指向的对象是p2,下面直接使用this.age=this.age+p.age,意思就是将p2=p2+p1;

进阶,我们不仅要加一次,还要加两次或三次,那这里就出问题了,为什么呢,如果想要调用两三次的函数为p2.ageAdd(p1).ageAdd(p1).ageAdd(p1);    ,这里我们p2调用了一次函数后上面的函数返回值是一个void,试问返回一个void在下面如何调用函数,所以我们得返回一个p2,但是不要直接返回一个p2,因为若直接返回一个p2就为值传递了,值传递是copy出一个新的副本,这时候的p2就不是原来的p2了,所以我们需要使用引用,引用是不改变值本身的,直接改了一个别名,地址没变,而且我们返回p2就用*this,因为现在是p2在调用这个函数,所以现在this指向的对象是p2.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值