this指针

this是用于标识一个对象自引用的隐式指针,代表对象自身的地址。(this时时刻刻指向这个实例本身。)

在编译成员函数时,C++编译器会自动将this指针添加到成员函数的参数表中。在调用类的成员函数时,调用对象会把自己的地址通过this指针传递给成员函数。

由于this指针是在程序员不知晓的情况下,由编译器添加到成员函数参数表中的隐含参数,所以称它为隐式指针

说明:

1.尽管this是一个隐式指针,但在类的成员函数中可以显示地使用它。

2.在类 X 的非const成员函数里,this的类型就是 X* const,不能给this赋值,但可以通过它修改数据成员的值。在类的const成员函数里,this被设置为const X* 型,不能通过它修改数据成员的值。

3.静态成员函数没有this指针。这也是静态成员函数只能访问静态数据成员的原因。因为数据成员是通过this指针传递给成员函数的。

4.this在成员函数的开始前构造,在成员的结束后清除。this指针的传递效率比较高。

5.this指针并不占用对象的空间。它跟对象之间没有包含关系。

6.this指针会因编译器的不同而有不同的放置位置。可能是堆、栈、也可能是寄存器。this是“不同对象共享相同成员函数”的保证。

this的另一常用方式:

在类成员函数中,可以通过this指针返回对象的地址或引用。

 

注意

this指针只有在成员函数中才有定义。因此,你获得一个对象后,也不能通过对象使用this指针。所以,我们无法知道一个对象的this指针的位置。在成员函数里是可以知道this指针的位置的,(可以通过&this获得)也可以直接使用它。

 

 

 

 

                                                                                                                           ------------------摘自《C++面向对象程序设计》、《程序员面试宝典》

posted @ 2017-03-19 11:05  手可摘星晨  阅读(301)  评论(0)    收藏  举报