關(guān)鍵字mutable是C++中一個(gè)不常用的關(guān)鍵字,他只能用于類(lèi)的非靜態(tài)和非常量數(shù)據(jù)成員我們知道一個(gè)對(duì)象的狀態(tài)由該對(duì)象的非靜態(tài)數(shù)據(jù)成員決定,所以隨著數(shù)據(jù)成員的改變,對(duì)像的狀態(tài)也會(huì)隨之發(fā)生變化! 如果一個(gè)類(lèi)的成員函數(shù)被聲明為const類(lèi)型,表示該函數(shù)不會(huì)改變對(duì)象的狀態(tài),也就是該函數(shù)不會(huì)修改類(lèi)的非靜態(tài)數(shù)據(jù)成員.但是有些時(shí)候需要在該類(lèi)函數(shù)中對(duì)類(lèi)的數(shù)據(jù)成員進(jìn)行賦值.這個(gè)時(shí)候就需要用到mutable關(guān)鍵字了
例如:
編譯上面的代碼會(huì)出現(xiàn) error C2166: l-value specifies const object的錯(cuò)誤說(shuō)明在const類(lèi)型的函數(shù)中改變了類(lèi)的非靜態(tài)數(shù)據(jù)成員.
這個(gè)時(shí)候需要使用mutable來(lái)修飾一下要在const成員函數(shù)中改變的非靜態(tài)數(shù)據(jù)成員m_nAccess,代碼如下:
Powered by: C++博客 Copyright © 安帛偉