除了静态成员函数外,每个成员函数都有一个额外的、隐含的形参 this。在调用成员函数时,编译器向形参this传递调用成员函数的对象的地址。例如成员函数:
void Point::set(int a,int b) { x=a, y=b; } //成员函数定义
编译器实际上会重写这个函数为:
void Point::set(Point* const this,int a,int b) { this->x=a,this->y=b; }
对应的函数调用:
one.set(10,10); //调用成员函数
编译器实际上会重写这个函数调用为:
Point::set(&one,10,10); //调用成员函数
什么时候会用到this指针
(1)在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;
(2)当参数与数据成员名相同时,如this->n = n (不能写成 n=n)。
this指针的const限定