一、什么是this指针:
简单的来将就是调用者的指针,它的值就是调用者的地址。
二、this指针的作用:
为了区分到底是谁调用到了我这个成员方法。
三、this指针需要注意的点:
1. this指针只能在成员函数中使用,且不能显示的写在成员函数的参数列表里面,但是在函数体里面你可以显示的写出来也可以不写出来。
2. this指针是一个const指针,意味着我的指向不能修改,相当于T* const this。代表当前调用本函数的对象的地址。如object.test(),那么this的值就等于&object。
3. this指针,作为函数参数列表的一部分,成员函数调用时开始初始化,调用结束消亡。(this指针相当于一个局部变量,本质上是一个常指针)
4. const可以放到函数参数列表的结尾来修饰我this指针所指向的内容不可以修改。
5. 为什么静态成员函数的参数列表后面不能用const修饰?因为静态成员函数无法隐式的传入我的对象的地址,当然你的静态的成员函数的参数列表里面没有this指针,否则就会出现编译错误。
6.为什么静态成员方法无法调用非静态成员?因为非静态成员属于一个类对象,当去使用的时候,本质上相当于this->object。而对于静态成员函数没有this参数。
usingnamespacestd; classMyObject{ public: MyObject() { } ~MyObject() { } voidstaticshowStatic() { cout<<sa<<endl; // 访问的是静态成员变量sa,无法访问非静态成员变量a } voidshow() const// const修饰的是this指针所指向内容不能更改 { cout<<this->a<<endl; // 访问的是本对象的a } private: inta=5; staticintsa; }; intMyObject::sa=10; intmain() { MyObjectmyobject; myobject.show(); // 打印出来的是5MyObject::showStatic(); //不依赖于对象,通过类名::也可以调用,打印出来的是10return0; }