色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

淺談C++的mutable關鍵字

CHANBAEK ? 來源:明解嵌入式 ? 作者:Sharemaker001 ? 2023-04-15 11:13 ? 次閱讀

C++11中推出了一種特殊的關鍵字:mutable用于修飾類變量。 它的作用是標注該變量一定會被修改,因此也就不是const類型。 目的是為了使這些成員變量在被const關鍵字修飾的成員函數中使用時,可以被修改。

但是我們會發現一個問題,那就是不使用const修飾的變量本身就是可以修改的,那為什么還要添加mutable關鍵字呢? 這里涉及到一個用法,也是關于mutable的最常用的基本用法了。 如果不希望類成員函數修改類對象的狀態,那么這個成員函數一般會被const修飾,修飾成員函數后就不可以更改成員變量。 如果我們需要在const成員函數中修改一些與類對象狀態無關的成員變量,就可以用mutable來將這些成員變量修改為可變的。
直接看下面這個例子:

#include 
class Car
{
public:
    Car();
    ~Car();
    int getPrice() const; /*調用方法  const成員函數*/
    int getLen() const; /*調用方法 const成員函數*/
private:
    int m_carPrice;
    int m_carLen;
    mutable int m_carNum;            
};


Car::Car()
{
    m_carPrice = 50000;
    m_carLen = 5;
    m_carNum = 5;
}

Car::~Car()
{
}


int Car::getPrice() const
{
    m_carNum++;    //此處修改是可以,因為對m_carNum進行了mutable限定
    std::cout << m_carPrice  << std::endl;
    return m_carPrice ; // 無法修改該成員變量
}


int Car::getLen() const
{
    return m_carLen; // 無法修改該成員變量
}

可以看到,在C++中被const修飾的成員函數無法修改類的成員變量,成員變量在該函數中處于只讀狀態。 然而,在某些場合我們還是需要在const成員函數中修改成員變量的值,被修改的成員變量與類本身并無多大關系,也許你會說,去掉函數的const關鍵字就行了。 可問題是,我只想修改某個變量的值,其他變量希望仍然被const關鍵字保護。 這樣做相當于在函數中給mutable變量開了特例。

簡單理解,在C++中,mutable就是為了突破成員函數 const的限制,可以在const函數里面來修改被mutable修飾的成員變量。 即使在一個const函數中,被mutable修飾的變量,將永遠處于可變的狀態。 這樣,既保護了其他成員變量,又能達到我們單獨修改成員變量count值的目的。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62882
  • C++
    C++
    +關注

    關注

    22

    文章

    2114

    瀏覽量

    73793
  • 變量
    +關注

    關注

    0

    文章

    613

    瀏覽量

    28446
  • 關鍵字
    +關注

    關注

    0

    文章

    37

    瀏覽量

    6918
  • CONST
    +關注

    關注

    0

    文章

    45

    瀏覽量

    8180
收藏 人收藏

    評論

    相關推薦

    C語言關鍵字const的幾種用法

    本期來講解一個C語言的關鍵字——const。
    發表于 06-21 11:05 ?1706次閱讀
    <b class='flag-5'>C</b>語言<b class='flag-5'>關鍵字</b>const的幾種用法

    C++中常用關鍵字詳解(2)

    C++中,volatile是一個關鍵字,用于修飾變量,告訴編譯器該變量的值可能在程序流程之外被意外修改,因此編譯器不應該對該變量進行優化(如緩存變量值或重排指令順序)。
    發表于 08-08 16:15 ?371次閱讀

    C++筆記010:C++C的擴展——register關鍵字增強

    的地址在C語言里面是會出錯的。同樣的代碼我們放到C++編譯環境下,發現編譯是通過的!在C++中依然支持register關鍵字C++編譯器有
    發表于 08-11 12:34

    C語言volatile關鍵字詳解 精選資料分享

    1.volatile和什么有關百度翻譯是這樣子翻譯volatile的:圖1-1 百度翻譯volatile截圖volatile屬于C語言的關鍵字,《C Primer Puls》 是這樣解釋關鍵字
    發表于 07-22 07:20

    標準C語言總共有32個關鍵字

    標準C語言總共有32個關鍵字
    發表于 01-12 15:59 ?0次下載

    C++語言基礎講解視頻標識符與關鍵字

    C++語言基礎講解視頻標識符與關鍵字,喜歡的朋友可以下載來學習。
    發表于 01-14 15:31 ?7次下載

    C語言32個關鍵字

    C語言32個關鍵字,感興趣的小伙伴們可以看看。
    發表于 07-26 16:29 ?66次下載

    C51的符號和五大語句及關鍵字等詳細資料說明

    本文檔的主要內容詳細介紹的是C51的符號和五大語句及關鍵字等詳細資料說明包括了:C語言 基本標點符號,函數書寫格式與函數調用,單片機五大語句與32個C語言
    發表于 12-11 17:34 ?31次下載
    <b class='flag-5'>C</b>51的符號和五大語句及<b class='flag-5'>關鍵字</b>等詳細資料說明

    C++C的const關鍵字有何差別?

    C++C中的const關鍵字有何差別?
    的頭像 發表于 02-03 14:51 ?1845次閱讀

    C++mutable關鍵字詳解與實戰

    mutable關鍵字詳解與實戰 在C++mutable關鍵字是為了突破const關鍵字的限制,
    的頭像 發表于 09-10 09:23 ?5584次閱讀

    C++中的const關鍵字介紹

    前一篇文章我們主要介紹了C++中的復合類型引用和指針,這篇文章我們將會主要介紹C++中const關鍵字。有時候我們想定義一個值不能被改變的變量,例如我們想使用一個變量存儲buffer的大小,如果我們不希望這個值被改變,那么我們就
    的頭像 發表于 03-17 14:01 ?704次閱讀

    const關鍵字應用總結

    C++中的const關鍵字的用法非常靈活,而使用const將大大改善程序的健壯性
    的頭像 發表于 05-26 09:06 ?602次閱讀

    C語言32個關鍵字可以分為這幾類

    C語言是一種面向過程、抽象化的通用程序設計語言,廣泛應用于嵌入式底層和系統開發。C語言關鍵字共有32個,根據用途,可分為四類:第一類:變量數據類型關鍵字:14個第二類:9條基本語句用到
    的頭像 發表于 12-31 15:28 ?5157次閱讀
    <b class='flag-5'>C</b>語言32個<b class='flag-5'>關鍵字</b>可以分為這幾類

    快速掌握C語言關鍵字

    C語言中的32個關鍵字你知道多少個呢?根據關鍵字的作用分為四類:數據類型關鍵字、控制語句關鍵字、存儲類型
    的頭像 發表于 07-06 08:04 ?402次閱讀
    快速掌握<b class='flag-5'>C</b>語言<b class='flag-5'>關鍵字</b>

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發表于 10-07 12:44 ?324次閱讀
    主站蜘蛛池模板: 好男人好资源在线播放 | 日韩中文无线码在线视频 | 丰满的女友1在线观看 | 国产在线视频在线观看 | 青柠电影高清在线观看 | 国产精品 中文字幕 亚洲 欧美 | 挺进老师的紧窄小肉六电影完整版 | yellow在线观看免费直播 | 日日噜噜大屁股熟妇 | 一本道色播 | 日韩精品专区在线影院重磅 | 亚洲欧美日韩综合影院 | 亚洲、国产综合视频 | 亚洲欧洲久久 | 女子叉开腿让男子桶免费软件 | 人妻无码AV中文系统久久免费 | 国产专区青青在线视频 | 99久久精品毛片免费播放 | 国产私拍福利精品视频 | 伊人久久久久久久久香港 | 97精品在线播放 | 久久综合中文字幕无码 | 18禁无遮挡羞羞污污污污免费 | ca88亚洲城娱乐 | 色婷婷五月综合久久中文字幕 | 欧美精品亚洲精品日韩专区一 | 成人网视频在线观看免费 | 久久最新地址获取 | 日韩精品在线看 | 花蝴蝶高清影视视频在线播放 | 久久精品视频91 | 午夜婷婷精品午夜无码A片影院 | 诱人的女邻居9中文观看 | 三级黄色视屏 | 交换娇妻呻吟声不停中文字幕 | 免费色片播放器 | 91伊人久久大香线蕉 | 无码99久热只有精品视频在线 | 久久99re2热在线播放7 | 交换邻居波多野结衣中文字幕 | 国内精品久久久久久久999下 |