b站推廣網(wǎng)站2024mmm不用下載seo三人行論壇
mutable 可變的,易變的
- 跟 constant(既C++中的const)是反義詞
- 作用:
- 保持
常量對(duì)象
中大部分?jǐn)?shù)據(jù)成員仍然是“只讀”的情況下,實(shí)現(xiàn)對(duì)個(gè)別數(shù)據(jù)成員的修改
- 使類的const函數(shù)可以修改對(duì)象的mutable數(shù)據(jù)成員。
- 保持
- 注意事項(xiàng):
- mutable只能作用于類的非靜態(tài)和非常量數(shù)據(jù)成員
- mutable 和 const 是反義的,同時(shí)修飾自相矛盾
- mutable不能修飾static數(shù)據(jù)成員,因?yàn)閟tatic數(shù)據(jù)成員存儲(chǔ)在Data段或BSS段,屬于類,不屬于類對(duì)象,那么常對(duì)象和常函數(shù)可以對(duì)其任意地修改,所以類的static數(shù)據(jù)成員根本不需要mutable的修飾,但對(duì)于常對(duì)象的數(shù)據(jù)成員則不可以被修改,若想修改,則需要mutable的修飾。
- 在一個(gè)類中,應(yīng)盡量或者不用mutable,大量使用mutable表示程序設(shè)計(jì)存在缺陷。
- mutable只能作用于類的非靜態(tài)和非常量數(shù)據(jù)成員
使用場(chǎng)景:當(dāng)你有一個(gè)const成員函數(shù)需要訪問某個(gè)成員變量,但這個(gè)成員變量的值需要在函數(shù)調(diào)用期間更新時(shí)
class UserInfo {
private:const int a1;
public:mutable int age = 0;void setAge(int i) const {//沒有 mutable 會(huì)編譯報(bào)錯(cuò):Cannot assign to non-static data member within const member function 'setAge'age = i;
// a1 = 100;//const 不能賦值}void setAge2(int i) {age = i;}
};