const 修飾的變量不可改變,防止被惡意修修改。其中,當const修修飾類成員函數時,成員函數內部的此類全部成員變量都不可修改。程序員
mutable 的出現,就是爲突破const修飾的成員函數,若是一個變量被mutable修飾,那麼這個變量,即便在const函數內部,也能夠被修改。ide
volatile 本意是要求每次讀取此變量時,都要求再次讀取,不容許用以前的值。我以爲就是限制編繹器,對於非嵌入式程序員的用戶應該不大。打個比方,函數
int b = 3; ... ... int a = b;
當編繹讀取到int a = b這行,若是發現中間都未對b操做,那麼編繹器就會直接取b的值,不會像第一次那樣進行讀取。通常的程序沒有問題,但若是b是一個串口數據,此串口的數據一直在變化,那麼雖然在代碼中b的值未被操做,但它被改變了。此時b就不是以前的值了。這時就體現出volatile的做用。博客
上面是我本身讀博客,找資料理解的,可能不對,沒有作過嵌入式的程序,若是錯了,你們必定要幫我指出來哇,在下面留言,我必定會改的,爭取把博文寫對,讓更多的朋友認識理解哈。