码迷,mamicode.com
首页 > 其他好文 > 详细

this指针的作用

时间:2020-07-19 11:20:31      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:方法   举例   技术   实现   image   put   output   如何   img   

对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的。那么调用共享的成员函数是如何找到自己的数据成员?答案就是用this指针,下面举例说明:

技术图片

 

 当vbBook对象调用OutputPages成员函数时,this指针指向vbBook对象,当vcBook对象调用OutputPages成员函数时,this指针指向vcBook对象。在OutputPage成员函数中,用户可以显式地使用this指针访问数据成员。如

技术图片

 

 编译器为了实现this指针,在成员函数中自动添加了this指针对数据成员的方法,类似于上面的OutputPages方法。此外,为了将this指针指向当前调用的对象,并在成员函数中能够使用,每个成员函数中都隐含一个this指针作为函数参数,并在函数调用时将对象自身的地址隐含作为实际参数传递。例如,以OutputPages成员函数为例,编译器将其定义为:

void OutputPages(CBook* this)

{

    cout <<this->m_Pages<<endl;

}

在对象调用成员函数时,传递对象的地址到成员函数中。即当vbBook.OutputPages()时编译器将其解析为vbBook.OutputPages(&vbBook),这使得this指针合法,并能够在成员函数中使用。

 

this指针的作用

标签:方法   举例   技术   实现   image   put   output   如何   img   

原文地址:https://www.cnblogs.com/shiheyuanfang/p/13338317.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!