C++ 中的 this 指针

  • this指针是一个 隐含于 每一个非静态成员函数中的特殊指针. 它指向正在被该成员函数操作的那个对象
  • 当一个对象调用其成员函数时, 编译程序会先将对象的地址赋给this指针, 然后调用成员函数, 每次成员函数存取数据成员时, 会隐含使用this指针.
  • 当一个成员函数被调用时, 自动向它传递一个隐含的参数, 该参数是一个指向这个成员函数所在的对象的指针
  • this指针被隐含的声明为: ClassName *const this, 这意味着不能给this指针不能再指向其他对象, 在ClassName类的const成员函数中, this指针的类型为const ClassName* const, 这说明也不能对this指针所指向的这种对象进行赋值操作.
  • this并不是一个常规变量, 而是一个 右值, 所以不能取得this的地址.(不能&this, 左值右值的区别就在于是否可以取地址)
  • 在以下场景中, 经常需要显式使用this指针:
    • 为实现对象的链式引用
    • 为避免对同一对象进行赋值操作(this.obj = obj, 在构造函数中这种很常用)
    • 为实现一些数据结构时, 如list