了解和使用C++中的this指针及相关条件下const修饰成员函数

目录

前言

一、this指针的使用

二、const修饰成员函数

总结


前言

        this指针并不需要被定义,直接使用即可。在C++中成员变量和成员函数的存储是分开的。this指针的主要作用是指向被调用的非静态成员函数的所属对象。


一、this指针的使用

        1.可以解决变量名冲突的问题。如以下代码所示:

class ex
{
    public:
    ex(int n)
    {
     this->n=n;    
    /*这里this指向的n与下方定义的成员变量是同一个n,后面的n与成员函数中传入的参数n是同一个n*/
    }
    int n;

};

        此处this指针有效解决了一定情境下变量名冲突的问题。this指针指向被调用的成员函数所属的对象。

        2.返回对象本身

class ex
{
    public:
    ex(int n)
    {
     this->n=n;    
    /*这里this指向的n与下方定义的成员变量是同一个n,后面的n与成员函数中传入的参数n是同一个n*/
    }

    ex& addm(ex& p)
    {
    this->n+=n;
    return *this;//返回对象本身
    }
    int n;

};

void ez
{
ex p1(1);
ex p2(2);
p2.addm(p1).addm(p1);    //持续调用,使p2的值一直加1;
}

返回对象本身以便持续调用。(又称为链式编程思想) 。

二、const修饰成员函数

        常函数与常对象。两者均使用const修饰,但const的位置不同。代码示例如下:

class ex
{
public:
void ceshi()const //函数后接const变成常函数
{
//this->n=1;在常函数中这个变量不可以修改
this->m=1;//在常函数中前缀为mutable的变量可以修改

}
int n;
mutable int m;
};

void ceshi(){
const ex p;//常对象(在对象前面加const)
//p.n=2;
p.m=2;//之前前缀定义为mutable的变量也可以在此处修改
}

此外,常对象 只能调用常函数。若想修改成员属性,需要在成员属性前面加mutable关键字


总结

        this指针可以解决变量名重复的问题,也可以使用this指针返回对象本身进行持续的调用。使用const可以定义常函数和常对象,如需在常函数或常对象中修改成员书信,可以在成员属性前面加mutable。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值