类的this指针
类的this指针有以下特点: (1)this只能在成员函数中使用。 全局函数、静态函数都不能使用this。 实际上,成员函数默认第一个参数为T* const this。 如: class A{public: int func(int p) {}}; 其中,func的原型在编译器看来应该是: int func(A* const this, int p); (2)由此可见,this在成员函数的开始前构造,在成员的结束后清除。 这个生命周期同任何一个函数的参数是一样的,没有任何区别。 当调用一个类的成员函数时,编译器将类的指针作为函数的this参数传递进去。如: A a;a.func(10); 此处,编译器将会编译成: A::func(&a, 10); 看起来和静态函数没差别,对吗?不过,区别还是有的。编译器通常会对this指针做一些优化,因此,this指针的传递效率比较高——如VC通常是通过ecx寄存器传递this参数的。 (3)几个this指针的易混问题。 1)this指针是什么时候创建的? this在成员函数的开始执行前构造,在成员的执行结束后清除。 但是如果class或者struct里面没有方法的话,它们是没有构造函数的,只能当做C的struct使用。采用TYPE xx的方式定义的话,在栈里分配内存