定义
this 指针是 C++ 中的一个特殊指针,它指向当前对象的地址。 它可以在类的成员函数中使用,以便在函数内部访问当前对象的成员变量和成员函数。 当类的成员函数被调用时,编译器会隐式地将当前对象的地址作为一个参数传递给该函数,这个参数就是 this 指针
this 是 c++中的一个关键字,也是一个 const 指针
作用
其作用就是指向成员函数所作用的对象
当形参和成员变量同名时,可用this指针来区分
注意,this 是一个指针,要用->
来访问成员变量或成员函数
做返回值
this指针的特性
1. this指针的类型:类类型* const
2. 只能在“成员函数”的内部使用
3. this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针。
4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户 传递
注意:
- this 是 const 指针,它的值是不能被修改的,一切企图修改该指针的操作,如赋值、递增、递减等都是不允许的。
- this 只能在成员函数内部使用,用在其他地方没有意义,也是非法的。
- 只有当对象被创建后 this 才有意义,因此不能在 static 成员函数中使用
面试题
1.this指针存储在哪里?
this是形参,所以它跟普通参数一样存在栈中,不过有的编译器对它做了优化,如:vs中对象的地址放在寄存器ecx中,不同的编译器情况或许略有不同,可能是栈、寄存器、全局变量。
2.this指针可以为空吗?
可以,只要我们不对它解引用就不会报错。