跳至主要內容

this指针

张威大约 2 分钟c/c++类和对象

类可以实例无数的对象,每个对象都有自己的成员变量,但是共享一套成员方法代码(存储在.text)。类的成员方法一经,会给的非静态成员函数都加一个this指针,接收调用该方法的对象的地址(即this指针的作用就是区分不同对象的(接收调用该方法的对象的地址)

  1. this指针指向本身
  2. this指针隐藏在**(非静态)成员函数第一个参数的位置**
  3. 被const修饰类类型 * const this ,即指针常量
void Point::print(Point *const this)
{
    cout << "(" << this->_ix
         << "," << this->_iy
         << ")" << endl;
}

对于类成员函数而言,并不是一个对象对应一个单独的成员函数体,而是此类的所有对象这个成员函数体。 当程序被编译之后,此成员函数地址即已确定。而成员函数之所以能把属于此类的各个对象的数据区别开, 就是靠这个this指针。函数体内所有对类数据成员的访问, 都会被转化为this->数据成员的方式

这就是一套方法能知道处理哪个对象的原因:因为当用对象调用这些方法的时候,他就把对象的地址当作实参传给这些函数了,这些函数在编译过程中会产生this指针来接收所传入函数的地址。