#include <iostream>
using namespace std;
class A
{
public:
int get() const{return i;}
void set(int x){this->i=x;cout<<"this指针保存的内存地址为:"<<this<<endl;}
private:
int i;
};
int main()
{
A a;
a.set(9);
cout<<"对象a所在的内存地址为:"<<&a<<endl;
cout<<"对象a所保存的值为:"<<a.get()<<endl;
cout<<endl;
A b;
b.set(999);
cout<<"对象b所在的内存地址为:"<<&b<<endl;
cout<<"对象b所保存的值为:"<<b.get()<<endl;
return 0;
}
这个程序的输出如下:

通过这个输出结果,我们可以看到,对象a的内存地址和this指针的一模一样(都是0017F7E8);而当运行到对象b的时候,它的内存地址又和它所对应的this指针指向的内存地址一模一样了(都是0017F7DC)。这就说明了this指针变量记录的是当前对象的内存地址,即this指针指向当前的对象!
在程序的第8行,我们就用了this指针的这个属性,即:this->i=x;这句话就表示把x的值赋值给当前的对象的私有成员函数i。
this只能在成员函数中使用,全局函数,静态函数都不能使用this。静态函数不属于任何一个对象,是全体对象共有,this 表示当前对象,而静态函数不在对象内,因此“当前对象”的概念就不适用了。