C++中的this和*this

C++中的this和*this

this指针

首先,this指针的使用范围是在类里面,因为类的成员函数可以访问类的数据,那么当我们一个成员函数传进去是一个类的时候,this指针就可以很明显的区分我们操作的是那一个数据了。

看一个例子:

我们建一个类A,里面有一个int的成员变量,还有一个compare成员函数,传入一个类A,比较他们成员变量的大小。

class A{
public:
    A(int d)
    {
        this->data = d;
    }

    bool compare(A a)
    {
        return this.data > a.data;
    }
private:
    int data;
}

这样子我们就可以区分传入类和本类了。

值得注意的是,this指针不能用于静态函数和全局函数,因为静态函数表示整个类范围上的信息,而this指针却是表示一个实在的类,所以在静态函数上使用this指针会出错哦。

*this是什么?

*表示的解引用,那么*this就很好理解了,就是指针的内容,即对象本身。那他的用途是在哪呢?

还是上面的例子,我们增加一个返回数据的函数:

int getData()
{
    return (*this).data;
    //return this->data; 作用一致
}

我们的*this就可以像对象一样,使用.操作符了。

还有一个用途就是可以把几个操作放在一个序列里。

我们新建一个setData函数重新设置data值,返回本身。在新建一个printData类去打印data:

A setData(int s)
{
    this->data = s;
    return *this;
}
void printData()
{
    printf("data = %d",this->data);
}

我们在main函数中可以这样使用:

int main()
{
    A a(20);
    a.setData(10).printData();
}

这样我们可以把设置data值和打印函数放在同一条序列上了。

  • 31
    点赞
  • 112
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值