新知榜官方账号
2023-08-12 10:18:20
在C++中,const、volatile和mutable是修饰数据可变的关键字。
const表示其修饰的内容不可改变,而volatile和mutable恰好相反,指示数据总是可变的。mutable和volatile均可以和const搭配使用,但两者在使用上有比较大差别。
mutable只能作用在类成员上,指示其数据总是可变的。不能和const同时修饰一个成员,但能配合使用。mutable修饰的成员数据可以发生改变,除此之外不应该对类/对象带来副作用。
一个使用场景是:呼叫系统中存有司机(Driver)的信息,为了保护司机的隐私,司机对外展现的联系号码每隔五分钟从空闲号码池更新一次。
volatile用于修饰成员或变量,指示其修饰对象可能随时变化,编译器不要对所修饰变量进行优化(缓存),每次取值应该直接读取内存。由于volatile的变化来自运行期,其可以与const一起使用。
在多线程环境下,volatile可用作内存同步手段。例如多线程爆破密码。
需要注意的是,volatile的值可能随时会变,期间会导致非预期的结果。
mutable只能用与类变量,不能与const同时使用;在const修饰的方法中,mutable变量数值可以发生改变;volatile只是运行期变量的值随时可能改变,这种改变即可能来自其他线程,也可能来自外部系统。
如果你想更好的提升你的编程核心能力,可以参考本文提供的编程学习资源。
相关工具
相关文章
推荐
中国首款3A游戏上线,《黑神话:悟空》出圈!
2024-08-21 13:46
盘点15款AI配音工具,短视频配音有救了!
2024-08-12 17:11
短视频文案没创意?10大AI写作工具来帮你!
2024-08-05 16:23
Midjourney发布V6.1版本,我已分不清AI和现实了!
2024-08-01 15:03
我发现了一款国产AI绘画神器,免费易上手!
2024-07-25 16:40
7位AI考生做今年高考题,能过一本线吗?
2024-07-19 17:17
世界上第一所AI学校来了,80亿人只需要1位老师?
2024-07-18 17:12
Sora首部AI广告片上线,广告从业者危险了!
2024-06-27 13:44
OpenAI与中国说拜拜,国产AI如何接棒?
2024-06-26 15:18
人与AI会产生爱情吗,专家发话了!
2024-06-17 17:28