1.this指针的经典描述:
当你进入一个房子后,
你可以看见桌子、椅子、地板等,
但是房子你是看不到全貌了。
对于一个类的实例来说,
你可以看到它的成员函数、成员变量,
但是实例本身呢?
this是一个指针,它时时刻刻指向你这个实例本身
2.this指针的使用:
一种情况就是,在类的非静态成员函数中返回类对象本身的时候,直接使用 return *this;
另外一种情况是当参数与成员变量名相同时,如this->n = n (不能写成n = n)。
3.this 指针的特点:
1)this只能在成员函数中使用。指向被调用函数所在的类实例的地址
全局函数、静态函数都不能使用this,
2)this在成员函数的开始前构造,在成员函数的结束后清除。
生命周期:同任何一个函数的参数一样
实际上,成员函数默认第一个参数为T * const this。
当对一个对象调用成员函数时,编译程序先将对象的地址赋给this指针,然后调用成员函数,每次成员函数存取数据成员时,由隐含使用this指针。
如:class A
{
public:
int func(int p)
{}
};
其中,func的原型在编译器看来应该是: int func(A * const this,int p);
this指针被隐含地声明为: X *const this,这意味着不能给this 指针赋值;
3)一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。
4)我们只有获得一个对象后,才能通过对象使用this指针
在C++中 ,类和结构是只有一个区别的:类的成员默认是private,而结构是public。this是类的指针,如果换成结构,那this就是结构的指针了。