this指针,一篇给你说明白

本文详细解释了C++中this指针的作用,它是编译器提供的隐藏const指针,用于成员函数访问调用对象。this是一个指向对象地址的常量指针,不可修改。通过例子展示了如何区分参数和类变量,以及如何在成员函数中返回对象地址。
摘要由CSDN通过智能技术生成

this指针是编译器提供给我们的一个 隐藏的const 指针,是每一个成员函数必备的默认参数,它指向调用对象本身(指向实例),只是c++语法将他隐藏起来了。当对象(实例)调用成员函数时,都会把自己的地址当作this指针输入给成员函数

就当this是一个指向该类地址的指针就好了

 

因为 this 的目的总是指向“这个”对象,所以 this 是一个常量指针,我们不允许改变 this 中保存的地址,它的值不能被修改。

成员函数通过一个名为 this 的额外隐式参数来访问调用它的那个对象,当我们调用一个成员函数时,用请求该函数的对象地址初始化 this。例如,如果调用 total.isbn()则编译器负责把 total 的地址传递给 isbn 的隐式形参 this

在成员函数内部,我们可以直接使用调用该函数的对象的成员,而无须通过成员访问运算符来做到这一点,因为 this 所指的正是这个对象。我们对类成员的直接访问都相当于使用了this的隐式引用,就像我们书写了 this->bookNo 一样。(没写,但是写了)

对于我们来说,this 形参是隐式定义的。实际上,任何自定义名为 this 的参数或变量的行为都是非法的。我们可以在成员函数体内部使用 this,这样可以明确地告诉编译器我们想要访问当前对象的成员变量,而不是函数参数或局部变量。

用法1:区分参数中的变量和类的变量

class MyClass
{
public:
    int x;
    void MyFunction(int x) {
        this->x = x;
    }
};

用法2:返回调用对象(实例)的地址

class MyClass
{
public:
    MyClass* function()
    {
        return this;
    }
};

注意,this 是一个指针,只能用在类的内部,要用->来访问所有成员变量或成员函数(包括 private、protected属性成员)。

 

 

  • 15
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值