const 修饰的变量不可改变,防止被恶意修修改。其中,当const修修饰类成员函数时,成员函数内部的此类全部成员变量都不可修改。程序员
mutable 的出现,就是为突破const修饰的成员函数,若是一个变量被mutable修饰,那么这个变量,即便在const函数内部,也能够被修改。ide
volatile 本意是要求每次读取此变量时,都要求再次读取,不容许用以前的值。我以为就是限制编绎器,对于非嵌入式程序员的用户应该不大。打个比方,函数
int b = 3; ... ... int a = b;
当编绎读取到int a = b这行,若是发现中间都未对b操做,那么编绎器就会直接取b的值,不会像第一次那样进行读取。通常的程序没有问题,但若是b是一个串口数据,此串口的数据一直在变化,那么虽然在代码中b的值未被操做,但它被改变了。此时b就不是以前的值了。这时就体现出volatile的做用。博客
上面是我本身读博客,找资料理解的,可能不对,没有作过嵌入式的程序,若是错了,你们必定要帮我指出来哇,在下面留言,我必定会改的,争取把博文写对,让更多的朋友认识理解哈。