欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 八卦 > This指针的概念

This指针的概念

2024/10/24 8:29:26 来源:https://blog.csdn.net/2203_75920722/article/details/141088577  浏览:    关键词: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.

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com