this指针:
在每个成员函数中都包含一个特殊的指针,这个指针的名字是固定的,称为this;
它是指向本类对象的指针,它的值是当前被调用的成员函数所在的对象的起始地址;
例如:当调用成员函数a.volume时,编译系统就把对象a的起始地址赋给this指针,于是成员函数引用成员数据时,就要按照this的指向找到对象a的数据成员;
例如:volume函数要计算heightwidthlength的值;
实际上是执行(this->height)(this->width)(this->length);
由于当前this指向a,因此相当于执行:(a.height)(a.width)(a.length);
这就计算出长方体a的体积;
上面三种代码都是等价的
- b.volume( ) ,编译系统就把对象b的起始地址赋给成员函数volume的this指针,显然计算出来的是长方体b的体积;
this是隐式使用的:
*this则表示被调用的成员函数所在的对象;
- *this就是this所指向的对象,即当前的对象;
- 例如:成员函数a.volume( )函数体中,如果出现*this,它就是本对象a;
注意:* this两侧的括号不能省略,不能写成*this.height;
所谓“调用对象a 的成员函数 f ”,实际上是在调用成员函数 f 时使用this指针指向对象a,从而访问对象a的成员。