当前位置:首页 » 《随便一记》 » 正文

this指针C++

25 人参与  2023年03月29日 15:05  分类 : 《随便一记》  评论

点击全文阅读


?博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍?专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章

?座右铭:“不要等到什么都没有了,才下定决心去做”

???大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点??? 

目录

?this 指针

?this指针的定义

?this指针的应用

?this指针的注意事项:


?this 指针

?this指针的定义

c++为类的对象分配内存空间时只为对象的数据成员分配内存空间,而将对象的成员函数放在另外一个公共区域,同一个类的多个对象共享它们的成员函数。那么,同一个类的多个对象的成员函数在访问对象的数据成员时,怎么确保访问的是正确的数据成员呢?例如声明的长方体类Box,定义了两个对象box1和box2,对于调用“box1.volume()”,应该box1中的height,width和length计算长方体box1的体积,对于“box2.volume()”,应该box2中的height,width和length计算长方体box1的体积。现在box1和box2调用的都是同一段代码,系统是怎么区分应该访问box1的数据成员还是box2的数据成员呢?

其实在每一个成员函数中都包含了一个特殊的指针,这个指针的名字是固定的,称为this指针。this指针是指向本类对象的指针,它的指向是被调用成员函数所在的对象,即调用哪个对象的该成员函数,this指针就指向哪个对象。在成员函数内部访问数据成员的前面隐藏着this指针。如前面前面提到的Box类中的volume函数,其中的height*width*length实际等价于(this->height)*(this->width)*(this*length)。如果调用box1对象的volume函数,则this指针就指向对象box1,所以(this->height)*(this->width)*(this*length)就相当于(box1.height)*(box1.width)*(b ox1.length),这样就是计算的box1的体积。

?this指针的应用

this指针是由系统通过参数隐式传递给成员函数的。如下列成员函数volume的定义:

float Box::volume(){    return  height*width*length;}

c++系统隐式处理为:

float Box::volume(Box* this){    return  (this->height)*(this->width)*(this*length);}

在函数形参表中增加一个this指针,而在调用时隐藏增加一个实参:

box1.volume(&box1);

需要注意的是,以上是帮助理解this指针的作用和它的工作原理,这些操作都是系统自动完成的,在使用时不需要再数据成员前面加上this指针,更不用调用的时候写出调用成员函数对象的地址作为实参。

有时候我们也会显示使用this指针,例如
Box的构造函数box,数据成员为length, width, weightBox::box(float length, float width, float weight){    length=length;    width=width;    weight=wight;}

这样构造函数的定义,系统就分不清,哪个length是数据成员,哪个length是形参,因为他们的名字一样

修改为:

Box::box(float length, float width, float weight){    this->length=length;    this->width=width;    this->weight=wight;}

这样系统就可以分清,’=‘左边的是数据成员,’=‘右边的是形参

?this指针的注意事项:

this指针并不是创建对象的一部分,this指针的类型取决于使用this指针的成员函数类型以及对象类型。

this指针不能再静态函数中使用

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

创建一个对象后,不能通过对象使用this指针。也无法知道一个对象的this指针的位置,在成员函数里,你可以知道this指针的位置通过&this,也可以直接使用的。

???如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! ???    


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/57062.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 荒年求生!我农场无限升级,皇帝都跪了小说(鱼宸汐)小说***下载_章节前文+后续(荒年求生!我农场无限升级,皇帝都跪了)
  • 靳砚修沈瓷后续(等不到白发苍苍)(靳砚修沈瓷)整本畅享在线+无广告结局
  • 热更章节_笔趣阁(白月光哪有联姻老婆香)霍彻孟时初白月光哪有联姻老婆香后续全本浏览阅读
  • 老公为哄情人开心,把女儿吊威亚上高温(沈思瑜,都说,许南枝)全书免费_(沈思瑜,都说,许南枝)老公为哄情人开心,把女儿吊威亚上高温后续(沈思瑜,都说,许南枝)
  • 要不见,便不会念凤九歌无和后续(凤九歌无和)全篇在线阅读前传
  • 等不到白发苍苍小说完本章节前文+全篇阅读(靳砚修沈瓷)连载中
  • 顾青柠陆景煜电子书+番外篇章+(宁嫁牌位不当妾,国公府我说了算)免费版在线阅读
  • 嫂子开门,我是我哥(江晚棠段成轩)全书浏览_嫂子开门,我是我哥全书浏览
  • 全文重生后为二皇子解神罚,太子殿下追悔莫及(裴光潜苏念柔裴砚书)列表_全文重生后为二皇子解神罚,太子殿下追悔莫及
  • 完结文等夏归列表_完结文等夏归(沈时安云意)
  • 诱娶小可怜,京圈太子跪地吻孕肚!每日分享_姚水儿傅宴亭快手热门_小说后续在线阅读_无删减免费完结_
  • 重生后我换嫁了前夫的哥哥,前夫却惨死了列表_重生后我换嫁了前夫的哥哥,前夫却惨死了(上官冽云舒棠云知意)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1