const,mutable,volitale的区别
来源:互联网 发布:mysql 取消外键约束 编辑:程序博客网 时间:2024/06/10 10:44
const 代表常量。
mutable
mutable int a;
代表一个类的常成员函数,例如,void GetSomething() const; 可以修改该成员。
void GetSomething() const
{
a = 0;
}
如果不加mutable,编译失败。
volatile:
就象大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
参考:http://zhidao.baidu.com/question/202184949.html
--------------------
volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值.
简单地说就是防止编译器对代码进行优化.比如如下程序:
XBYTE[2]=0x55;
XBYTE[2]=0x56;
XBYTE[2]=0x57;
XBYTE[2]=0x58;
对外部硬件而言,上述四条语句分别表示不同的操作,会产生四种不同的动作,但是编译器就不能像对待纯粹的程序那样对上述四条语句进行优化,只认为XBYTE[2]=0x58(即忽略前三条语句,只产生一条机器代码)。如果键入volatile,则编译器会逐一的进行编译并产生相应的机器代码(四条).
使用地方
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;
另外,以上这几种情况经常还要同时考虑数据的完整性(相互关联的几个标志读了一半被打断了重写),在1中可以通过关中断来实现,2中可以禁止任务调度,3中则只能依靠硬件的良好设计了。
参考:http://baike.baidu.com/view/608706.htm
- const,mutable,volitale的区别
- const, volitale and explicit
- const, volitale and explicit
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- Const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const、volatile、mutable的用法
- const, volatitle, mutable的用法
- 非关系型数据库SequoiaDB虚拟机下应用再探
- linux route命令详解
- git 处理多个衍生项目的方法
- java try catch finally 的处理测试
- SQL Server 优化存储过程的七种方法
- const,mutable,volitale的区别
- Java基本语法总结
- Linux 学习之路
- 监控元素加入的ObservableCollection
- 细节决定成败: BST c和c++实现的区别
- 错误提示:java.lang.NoSuchMethodException
- 信号量函数(semget、semop、semctl)及其范例
- 常用工具
- SpringMVC文件上传