c++ this指针常见知识点

来源:互联网 发布:软件开发述职报告 编辑:程序博客网 时间:2024/06/06 07:42

this指针是一个很神奇的东西,一个指向对象本身的指针。

首先最大的疑问是你在成员函数的形参上没有定义this指针,它是哪来的。其次它怎么能指向对象本身,它占空间吗?它的生命周期多长?下面总结一下答案

(1)this指针是一个被编译器隐藏起来的函数参数,每个成员函数默认第一个参数为T *const this(可以看看python类的成员函数,就要手动写this)

(2)this在成员函数开始前执行构造,在成员结束后清除。若采用new创建对象,在堆里分配内存,new操作符通过eax返回分配的地址,然后给指针变量。之后调用构造函数,将这个内存块地址给ecx,ecx寄存器存放this指针(自右向左入栈)

(3)this指针的存放不占用对象空间,只会在参数传递时占用栈空间或寄存器

(4)this指针只在成员函数内有定义,&this可以获得其位置