c++中class 中的this指针

来源:互联网 发布:茗记4知乎 编辑:程序博客网 时间:2024/06/06 19:09

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就是结构的指针了。

3 0
原创粉丝点击