const volatile mutable修饰变量的区别

const

const 修饰的变量不可改变,防止被恶意修修改。其中,当const修修饰类成员函数时,成员函数内部的此类所有成员变量都不可修改。

mutable

mutable 的出现,就是为突破const修饰的成员函数,如果一个变量被mutable修饰,那么这个变量,即使在const函数内部,也可以被修改。

volatile

volatile 本意是要求每次读取此变量时,都要求再次读取,不允许用之前的值。我觉得就是限制编绎器,对于非嵌入式程序员的用户应该不大。打个比方,

int b = 3;
...
...
int a = b;

当编绎读取到int a = b这行,如果发现中间都未对b操作,那么编绎器就会直接取b的值,不会像第一次那样进行读取。一般的程序没有问题,但如果b是一个串口数据,此串口的数据一直在变化,那么虽然在代码中b的值未被操作,但它被改变了。此时b就不是之前的值了。这时就体现出volatile的作用。


上面是我自己读博客,找资料理解的,可能不对,没有做过嵌入式的程序,如果错了,大家一定要帮我指出来哇,在下面留言,我一定会改的,争取把博文写对,让更多的朋友认识理解哈。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值