this指针的作用和用法

由于C++中成员变量和成员函数是分开存储的,所以每一个非静态成员函数只会诞生一份函数实例,就是多个同类型的对象会共用一块代码,如果需要让一块代码调用自己,可以用到this指针,this是C++提供的特殊的对象指针,不需要定义。

this指针指向被调用的成员函数所属的对象

第一个用途:当形参和成员变量同名时,可以用this指针来区分

struct Member
{
    Member(int score)
    {
        this->score=score; //this->成员变量 = 形参
    }
    int score;
};
int main()
{
    Member n1(5);
    cout<<n1.score<<endl;  //5
}

当然如果形参和成员变量名字不一样时,也可以不使用this指针

第二个用途:在类的非静态成员函数中返回对象本身,可使用return *this,用于链式编程

struct Member
{
    Member(int score)
    {
        this->score=score;
    }

    Member& AddScore(Member& n) 
    //这里如果不使用&的话,返回的虽然也是一个对象,但是这个对象不是n1了,是临时创建出来的对象
    {
        this->score+=n.score;
        return *this;
    }
    int score;
};
int main()
{
    Member n1(5);
    Member n2(100);
    Member n3(30);
    n1.AddScore(n2); //5+100=105
    n1.AddScore(n2).AddScore(n3);//105+100+30=235
    cout<<n1.score<<endl;  //235
}

在这里插入图片描述
由于AddScore()函数返回的是一个对象,对这个对象取引用,则这个对象也就是n1


struct Member
{
    Member(int score)
    {
        this->score=score;
    }

    Member AddScore(Member& n) 
    //这里没有使用引用,返回的虽然也是一个对象,但是这个对象不是n1了,是临时创建出来的对象
    {
        this->score+=n.score;
        return *this;
    }
    int score;
};
int main()
{
    Member n1(5);
    Member n2(100);
    Member n3(30);
    n1.AddScore(n2); //5+100=105


    n1.AddScore(n2).AddScore(n3);//105+100=205
    cout<<n1.score<<endl;  //205
}

在这里插入图片描述
由于AddScore()函数返回的是一个对象,但是没有引用,则这个对象也就不是n1了,而是临时创建出来的n1’,n1’中的AddScore()函数执行一次后返回的是n1’’

  • 10
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值