作用:指向成员函数所作用的对象
非静态成员函数中可以直接使用this来代表指向该函数作用的对象指针
例如:
class Complex{ public: double real, imag; void Print(){ cout << real << "," << imag;} Compelx(double r, double i): real(r), iamg(i) { } Compelx AddOne(){ this->real++; // 等价于real++; this->Print(); // 等价于Print() return *this } }; int main(){ Complex() c1(1,1), c2(0,0); c2 = c1.AddOne(); 输出2,1 return 0; }
其实对比下面代码中的替换会理解得更清楚一点
class A{ int i; public: void Hello() { cout<< i << "hello" << endl;} // 替换: void Hello(A *this){ cout << this->i << "hello" << endl; } }; int main(){ A *p = NULL; p->Hello(); // 替换 Hello(p); } // 也就是非静态成员函数其实最前面缺省了一个this指针,他指向了对象本身
this指针和静态成员函数