this指针
2016-06-12 16:40
260 查看
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获得),也可以直接使用它。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性