C++ this指针/常量成员函数/const/mutable

1.this 指针

  this 指针,指向成员函数所作用的对象,并且 this 总是指向这个对象,所以 this 是一个常量指针,我们不允许改变 this 中保存的地址。this 的类型可以理解成:

类类型 *const this;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.常量成员函数

  常量成员函数中,this 的类型可以理解成:

const 类类型 *const this;

  为什么需要常量成员函数?

(1)常函数是为了使用类的时候更安全。比如:有的成员函数只需要返回类的某些成员变量的值而不需要修改,就可以把这种成员函数定义成常函数,从语法上保证成员函数中不会修改;
(2)在C++项目的开发中,定义类(程序员A)和使用类(程序员B)的很可能是两个程序员,所以程序员之间约定一些规则。比如程序员B使用程序员A的定义的类,当程序员B看到类的成员函数被const修饰,就知道这是个常函数,调用这个成员函数不会修改对象的数据,可以放心使用;

  使用常量成员函数的好处?

(1)首先要知道常函数是C++语言提供的一种机制,用来保证成员函数不会修改类的成员;但是就算C++不提供常函数机制,程序员也同样可以实现常函数的效果,只要程序员不在成员函数里修改类的成员即可;
(2)如果不使用常函数机制,那么就要靠程序员自己保证不在成员函数中修改类的成员变量。靠程序员去保证是不靠谱的,尤其是在大型程序中,所以常函数机制可以强制保证成员函数不会去修改成员变量;
(3)常函数可以让使用类的程序员明确知道调用成员函数不会修改类的成员变量。就和C语言用const去修饰函数的传参一样,明确表示函数不会修改传进来的参数;

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.mutable 成员变量

(1)mutable的作用是突破const限制,有点和const的作用反着干的意思:const修饰成员函数让成员函数不能在内部修改成员变量,而mutable修饰成员变量,让常函数在内部又可以修改mutable修饰的成员变量;
(2)const和mutable关键字,体现了C++语言给程序员预留了相当大的灵活度,程序员既可以用const去实现常函数,又可以用mutable去给某些成员变量特殊性,让常函数在内部可以修改用mutable修饰的成员变量;

在这里插入图片描述

4.const 关键字总结

(1)const关键字在C语言中就有,C++兼容C,所以C中const的用法C++中全都支持;
(2)const修饰引用,主要用于函数传参,限制函数内部对实参进行修改;
(3)const修饰成员函数(常函数),限制成员函数在内部修改成员变量;

5.参考内容

【C++入门】const和mutable关键字、常函数介绍

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xxxx9300

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值