參考 https://blog.csdn.net/FX677588/article/details/74615658
1、在C++中,mutable是為了突破const的限制而設(shè)置的。被mutable修飾的變量,將永遠(yuǎn)處于可變的狀態(tài),即使在一個(gè)const函數(shù)中,甚至結(jié)構(gòu)體變量或者類(lèi)對(duì)象為const,其mutable成員也可以被修改,對(duì)業(yè)務(wù)邏輯的約束
2、volatile是一個(gè)類(lèi)型修飾符。volatile修飾的數(shù)據(jù),編譯器不可對(duì)其進(jìn)行執(zhí)行期寄存器于寄存器的優(yōu)化。這種特性,是為了滿(mǎn)足多線(xiàn)程同步、中斷、硬件編程等特殊需要。遇到這個(gè)關(guān)鍵字聲明的變量,編譯器對(duì)訪(fǎng)問(wèn)該變量的代碼就不再進(jìn)行優(yōu)化,從而可以提供對(duì)特殊地址的直接訪(fǎng)問(wèn),對(duì)編譯器的優(yōu)化約束