目录
一.使用范围
this指针本质是一个函数参数,只能在成员函数中使用。全局函数,静态函数都不能使用this。
成员函数默认第一个参数为T*const this.
如:class A
{
public:
int fun(int p){}
};
fun的原型在编译器看来是int fun(A *const this,int p);
二.生命周期
1.构造时间:在成员函数执行前开始前构造
2.销毁时间:在成员函数结束后清除
三.存放位置
因编译器不同而有不同的放置位置。
C++是一种静态语言,C++的分析应该从语法层面和现实层面进行。
语法上,this是个指向对象的”常指针“,因此无法改变。
实际上,_cedcl调用约定规定(C++默认调用约定)this是个寄存器参数。
四.传参方法
大多数编译器通过ecx寄存器传递this指针。一般来说不同的编译器会遵从一致的传参规则。
只有在成员函数里,才知道this指针的位置。因此,获得一个对象后,不能通过对象使用this指针,无法知道一个对象this指针的位置。