您的位置:首页 > 编程语言 > C语言/C++

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++