• C++中类中的this是什么this?


    在C++的类中经常遇到this,但是this究竟是何物?相信很多新人肯定有这样那样的疑惑。

    this后面经常带一个箭头如  this -> data = data云云。

    下面就先举一个例子:

    #include"iostream"
    using namespace std;
    
    class point
    {
    public:
        int x, y;
        point()
        {
            x = 0; y = 0;
        }
        point(int a, int b)
        {
            x = a;//同样的如果参数一致,还会导致变量可见性问题
            y = b;
        }
        void output(void)
        {
            cout << x << endl << y << endl;
        }
        void input(int x,int y)
        {
            this->x = x;     //使用this指针可以知道this->x是对象中成员变量的x
            this->y = y;
        }
        void OriginInput(int x, int y)
        {
            x = x;  //使用鼠标点击x,即可知道,函数体内部的x是哪里的
            y = y;  //由于变量的可见性导致的问题
        }
    
        //int input(int a, int b) 无法按照仅仅是返回类型不同来重载,对象不知道调用具体函数
        void ChangeInput(int a,int b) //可以改变参数名称,使之与成员变量名不同。
        {
            x = a;
            y = b;
        }
    };
    
    void main()
    {
        point pt;
        pt.input(10, 10);
        pt.output();
    
        pt.ChangeInput(5, 5);
        pt.output();
        //对象pt被赋值后已经为(5,5)
        pt.OriginInput(6, 6);
        pt.output();
    }

    输出如下:

    其实也可以看见了,this表示的是类本对象的指针,如这样一个函数 

    void  init(int x, int y);

    恰好,本类中有同名的成员变量即,

    private:

      int x = 0 ; int y = 0;

    那么在函数里这样声明就比较清晰了

    void init(int x, int y)
    {
        this -> x = x;
        this -> y = y;
    }
    

      这就表示了,本对象的成员变量x, y被函数init的参数给赋值。

  • 相关阅读:
    Cocos2d-x之Vector<T>
    Cocos2d-x之Array
    Cocos2d-x之Value
    Cocos2d-x之String
    Cocos2d-x中使用的数据容器类
    Cocos2d-x之Action
    Cocos2d-x之定时器
    Cocos2d-x之MessageBox
    Cocos2d-x之Log输出机制
    Cocos2d-x之事件处理机制
  • 原文地址:https://www.cnblogs.com/cyhezt/p/9852810.html
Copyright © 2020-2023  润新知