this 指针
首先,我们要知道C++中,类的成员函数可以访问类的数据,那么成员函数如何知道哪个对象的数据成员要被操作呢?
原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。this指针的类型取决于使用this指针的成员函数类型以及对象类型。
一、什么是this指针
a.在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
b.this只能在成员函数中使用
c.this指针不能再静态函数中使用,静态函数如同静态变量一样,他不属于具体的哪一个对象,静态函数表示了整个类范围意义上的信息,而this指针却实实在在的对应一个对象,所以this指针不能被静态函数使用。
d.this指针的创建:this指针在成员函数的开始执行前构造的,在成员的执行结束后清除。
e.this指针只有在成员函数中才有定义。
二、如何用this指针
#include<iostream>
using namespace std;
class A{
private:
int x;
public:
A(){
x=0;
}
void display(){
cout<<this<<endl;
cout<<this->x<<endl;
cout<<x<<endl;
cout<<(*this).x<<endl;
}
};
int main(void){
A a;
a.display();
}