类和对象(12)—— this指针
首先,我们都知道类的成员函数可以访问类的数据(限定符只是限定于类外的一些操作,类内的一切对于成员函数来说都是透明的),那么成员函数如何知道哪个对象的数据成员要被操作呢,原因在于每个对象都拥有一个指针:this指针,通过this指针来访问自己的地址。注:this指针并不是对象的一部分,this指针所占的内存大小是不会反应在sizeof操作符上的。
this指针的类型取决于使用this指针的成员函数类型以及对象类型,(1)假如this指针所在类的类型是Stu_Info_Mange类型,(下面的测试用例中的类的类型,借来用用),并且如果成员函数是非常量的,则this的类型是:Stu_Info_Mange * const 类型,(2)既一个指向非const Stu_Info_Mange对象的常量(const)指针,假若成员函数是常量类型,则this指针的类型是一个指向constStu_Info_Mange对象的常量(const)指针。
#include <iostream> using namespace std; class Test { public: Test(int a, int b)//===>Test(Test *this,int a, int b) { this->a = a; this->b = b; } void printT() { cout << "a:" << this->a << endl; cout << "b:" << this->b << endl; } private: int a; int b; }; int main(void) { Test t1(1, 2);//===>Test(&t1,1,2); t1.printT();//===>printT(&t1); return 0; }
若类成员函数的形参和类的属性,名字相同,通过this指针来解决;
类的成员函数可通过const修饰。