1)this指针是什么时候创建的?
this在成员函数的开始执行前构造,在成员的执行结束后清除。
采用TYPE xx的方式定义的话,在栈里分配内存,这时候this指针的值就是这块内存的地址。
采用new的方式创建对象的话,在堆里分配内存,new操作符通过eax返回分配的地址(VC通过ecx寄存器传递this参数),然后设置给指针变量。之后去调用构造函数,这时将这个内存块的地址传给ecx。
2)this指针是如何访问类中的变量的?
在C++中,类和结构只有一个区别:类的成员默认是private,而结构的成员默认是public。
this是类的指针,如果换成结构,那this就是结构的指针了。
3)我们只有获得一个对象后,才能通过对象使用this指针。如果我们知道一个对象this指针的位置,可以直接使用吗?
this指针只有在成员函数中才有定义。因此,你获得一个对象后,也不能通过对象使用this指针。所以,我们无法知道一个对象的this指针的位置(只有在成员函数里此案有this指针的位置)。当然,在成员函数里,你是可以知道this指针的位置的(可以通过&this获得),也可以直接使用它。