this指针变量记录的是当前对象的内存地址,即this指针指向当前的对象!
this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问均通过this进行。
例如,调用date.SetMonth(9) <===> SetMonth(&date, 9),this帮助完成了这一转换。
这样理解类,就是函数和变量都是公用,定义了一个对象之后,对象的this指针指向该函数的时候,再调用其。
#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;
}