this指针
什么是this指针
在使用类函数时,该函数会隐藏一个this指针,它会负责找到我们成员函数中所需的成员变量(成员变量可以是私人的),如下图所示,上面是我们调用时的用法,下面是隐藏的this指针重新加上的效果。
在成员函数中使用this指针的时候,可以不用写出来,编译器自己会加上。但我们也可以自己加上this指针。
This指针特点:
1. 在成员函数形参和实参部分不能自己定义this指针(编译器不让你干他的活)但在成员函数内部存在this指针,并且可以调用它。
2. this指针的类型:* const,即在成员函数中,我们不能给this指针赋值。
3. this指针只能在“成员函数”的内部使用。
4. this指针本质上是“成员函数”的形参,当对象调用成员函数时,将对象地址作为实参传递给this形参,所以对象中不存储this指针。
5. this指针是“成员函数”第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递。
This指针存储在哪?
内存被分为:堆区,栈区,静态区,常量区,代码区。堆区需要malloc,静态区需要static修饰或者本身就是全局变量,常量区存放的是常量,代码区存放的是代码。所以this指针只能存放在栈区(this指针是一个形参),有些编译器会把this指针放在寄存器中(方便更快速地使用)。