关于 this 指针

1)this指针的本质是一个函数参数,只能在成员函数中使用,全局函数,静态函数都不能使用。

class A{

public:

  int func(int p){};

}
其中func的实际表示形式为int func(A* const this,int p);

2)this指针并不占用对象的空间

this相当于非静态成员函数的一个隐含的参数,不占用对象空间

3)this指针什么时候创建

this在成员函数的开始执行前构造,在成员的执行结束后清除。

4)this指针存放在何处?

this指针会因为编译器不同而有不同的放置位置。可能是堆,栈,也可能是寄存器。

语法上,this是一个指向对象的“常指针”,因此无法改变。它是一个指向相应对象的指针。所有对象共用的成员函数利用这个指针区别不同变量。

实际应用的时候,this是一个寄存器参数,不是语言所规定的。

5)this指针如何传递给类中的函数?

编译器通过ecx寄存器传递this指针,一般编译器都会遵从一直的传参规则,不同编译器产生的obj就无法匹配了。

 

posted on 2017-03-02 05:33  123_123  阅读(111)  评论(0编辑  收藏  举报