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++面向对象程序设计》、《程序员面试宝典》

浙公网安备 33010602011771号