zoukankan      html  css  js  c++  java
  • 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的参数给赋值。

  • 相关阅读:
    页面滚动性能优化之passive
    【webpack4x】部分底层原理及手写一个简单打包工具
    【webpack4x】实战配置及问题解析
    【webpack4x】高级概念
    【webpack4x】核心概念
    VMware虚拟机服务的vmware-hostd自动启动和停止
    海淘电商网址
    一键批量ping任意ip段的存活主机
    cpanel导入大数据库(mysql)的方法
    awstats 日志分析
  • 原文地址:https://www.cnblogs.com/cyhezt/p/9852810.html
Copyright © 2011-2022 走看看