类和对象(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修饰。

 

posted @ 2018-10-18 16:05  悦悦的小屋  阅读(385)  评论(0编辑  收藏  举报