this指针
来源:互联网 发布:三国志9全武将数据 编辑:程序博客网 时间:2024/06/06 16:47
this指针
1. 使用范围
1. 只能在成员函数中只用
2. 全局函数中不可使用
全局函数是定义在类外的函数,成员函数就是定义在类中的函数。
3. 静态函数中不可使用
class a{ static int fun(){}};
2. 创建时间
this在成员函数的开始执行前构造,在成员的执行结束后清除。
3. 存放位置
this指针会因编译器不同而有不同的放置位置。
可能是栈,也可能是寄存器,甚至全局变量。
在汇编级别里面,一个值只会以3种形式出现:立即数、寄存器值和内存变量值。不是存放在寄存器就是存放在内存中,它们并不是和高级语言变量对应的。
在实际应用中,this应该是个寄存器参数
注意:
1. this指针不占用对象的空间
this相当于非静态成员函数的一个隐含的参数,不占用对象的空间。它跟对象之间没有包含关系,或者直接占用一个寄存器。
2. this指针是如何传递类中的函数的?
大多数编译器通过ecx寄存器传递this指针。事实上,这也是一个潜规则。一般来说,不同编译器都会遵从一致的传参规则,否则不同编译器产生的obj就无法匹配了。
3. 只有获得一个对象后,才能通过对象使用this指针
this指针只有在成员函数中才有定义。
因此,获得一个对象后,也不能通过对象使用this指针。
所以,我们无法知道一个对象的this指针的位置(只有在成员函数里才有this指针的位置)。
当然,在成员函数里,你是可以知道this指针的位置的(可以通过&this获得),也可以直接使用它。
0 0
- this指针
- this指针
- this指针
- this指针
- this指针
- this 指针
- this指针
- this指针----
- this指针
- this 指针
- This 指针
- this指针
- This指针
- this指针
- this指针
- this 指针
- this指针
- this指针
- 如何使用Android调用百度地图API——实时定位
- hive元数据库表分析及操作
- kali虚拟机连接网络上网
- moment.js获取除本季度外的前四个季度
- 在Docker中运行“hello Word”应用
- this指针
- 反编译工具【jd-gui】”有严重Bug!
- myeclipse10.6破解,解决导出war包时报“SECURITY ALERT: INTEGERITY CHECK ERROR”
- Monad in Hask(一)
- Android Design Support Library(二):CoordinatorLayout、AppBarLayout简单用法
- linux 中cat用法
- JQuery中的ajax处理
- eclipse调试查看属性值的小技巧
- Sublime Text3 js语法错误提示