是什么
- this 是 C++ 中的一个关键字。
- this 是一个 const 指针(意味着值是不能被修改的),指向当前对象,要用
->
来访问当前对象(当前对象是指正在使用的对象)成员变量或成员函数。 - this 只能用在类的内部,通常只能在成员函数内部使用,用在其他地方没有意义,也是非法的。
- this 只有在对象被创建以后才会被赋值,并且这个赋值的过程是编译器自动完成的,用户不必也不能干预。只有当对象被创建后 this 才有意义,因此不能在 static 成员函数中使用。
什么用
- 隐式形参(传递对象地址):this 实际上是成员函数的一个形参,在调用成员函数时将对象的地址作为实参传递给 this。不过 this 这个形参是隐式的,它并不出现在代码中,而是在编译阶段由编译器默默地将它添加到参数列表中。this 作为隐式形参,本质上是成员函数的局部变量,所以只能用在成员函数的内部,并且只有在通过对象调用成员函数时才给 this 赋值。
- 联系成员变量和成员函数:成员函数最终被编译成与对象无关的普通函数,除了成员变量,会丢失所有信息,所以编译时要在成员函数中添加一个额外的参数,把当前对象的首地址传入,以此来关联成员函数和成员变量。这个额外的参数,实际上就是 this,它是成员函数和成员变量关联的桥梁。