美文网首页C++复习
C++中的this指针

C++中的this指针

作者: 凉拌姨妈好吃 | 来源:发表于2018-05-11 01:13 被阅读5次

    参考博客

    简单说明一下this指针到底是什么

    class是用户自定义的类型,我们都知道int *p是指向int类型的指针,而 this就是指向class的指针。对this指针进行解引用就得到自定义类型的变量。

    this指针的作用域

    它的作用域在类内部,当类的非静态成员函数调用非静态成员时,编译器会自动将类的地址作为一个隐含参数传递给函数。

    class MyClass
    {
        void test(MyClass *this,int arg1, float arg2) {}
        //第一个参数就是隐含参数
    };
    
    this的值是否可以改变?

    不行,this存在的目的就是为了一直指向某个对象,所以this是常量指针,不能修改它的指向

    class Point
    { 
      int x, y;
    public:
      Point(int a, int b) { x=a; y=b;}
      Void MovePoint( int a, int b){ x+=a; y+=b;}
    };
    void main( )
    {
       Point point1( 10,10);
       point1.MovePoint(2,2);
      //point1调用该成员函数时,将point1的地址作为隐含参数传递给了成员函数
      //相当于void MovePoint(int a, int b) { this->x +=a; this-> y+= b;}
      //即 point1.x+= a; point1. y + = b;
    }
    
    this指针是在何时创建的?

    在成员函数执行之前构造,执行结束之后清除

    为什么this指针不用于静态成员函数?

    静态成员函数的作用域是全局的,并不是属于某个对象的,而是整个类共有的。this指针针对于某个对象,而不是某个类。

    相关文章

      网友评论

        本文标题:C++中的this指针

        本文链接:https://www.haomeiwen.com/subject/tsjxdftx.html