在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++中mutable關(guān)鍵字詳解與實(shí)戰(zhàn)

Android編程精選 ? 來源:編程學(xué)習(xí)總站 ? 作者:寫代碼的牛頓 ? 2021-09-10 09:23 ? 次閱讀

mutable關(guān)鍵字詳解與實(shí)戰(zhàn)

C++中mutable關(guān)鍵字是為了突破const關(guān)鍵字的限制,被mutable關(guān)鍵字修飾的成員變量永遠(yuǎn)處于可變的狀態(tài),即使是在被const修飾的成員函數(shù)中。

在C++中被const修飾的成員函數(shù)無法修改類的成員變量,成員變量在該函數(shù)中處于只讀狀態(tài)。然而,在某些場(chǎng)合我們還是需要在const成員函數(shù)中修改成員變量的值,被修改的成員變量與類本身并無多大關(guān)系,也許你會(huì)說,去掉函數(shù)的const關(guān)鍵字就行了。可問題是,我只想修改某個(gè)變量的值,其他變量希望仍然被const關(guān)鍵字保護(hù)。

現(xiàn)在有個(gè)場(chǎng)景,我們想獲取函數(shù)被調(diào)用的次數(shù),代碼如下:

class Widget{ public: Widget(); ~Widget() = default; int getValue() const; int getCount() const; private: int value; int count; };

這里我們想要獲取getValue函數(shù)被調(diào)用次數(shù),普遍的做法是在getValue函數(shù)里對(duì)成員變量count進(jìn)行加1處理,可是getValue被關(guān)鍵字const修飾啊,無法修改count的值。這個(gè)時(shí)候mutable派上用場(chǎng)了!我們用mutable關(guān)鍵字修飾count,完整代碼如下:

#include 《iostream》 class Widget{ public: Widget(); ~Widget() = default; int getValue() const; int getCount() const; private: int value; mutable int count; }; Widget::Widget() : value(1), count(0) { } int Widget::getValue() const{ count++; return value; } int Widget::getCount() const{ return count; } int main() { Widget w1; for(int i = 0; i 《 5; i++){ w1.getValue(); } std::cout 《《 w1.getCount() 《《 std::endl; return 0; }

被mutable修飾的成員變量count在getValue函數(shù)里進(jìn)行加1計(jì)數(shù),編譯運(yùn)行輸出如下:

5

既保護(hù)了其他成員變量,又能達(dá)到我們單獨(dú)修改成員變量count值的目的。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴

原文標(biāo)題:C++ mutable關(guān)鍵字如何使用?

文章出處:【微信號(hào):AndroidPush,微信公眾號(hào):Android編程精選】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Spire.XLS for C++組件說明

    Spire.XLS for C++ 是一款專業(yè)的 C++ Excel 組件,可以用在各種 C++ 框架和應(yīng)用程序。Spire.XLS for C+
    的頭像 發(fā)表于 01-14 09:40 ?145次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    EE-112:模擬C++的類實(shí)現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《EE-112:模擬C++的類實(shí)現(xiàn).pdf》資料免費(fèi)下載
    發(fā)表于 01-03 15:15 ?0次下載
    EE-112:模擬<b class='flag-5'>C++</b><b class='flag-5'>中</b>的類實(shí)現(xiàn)

    C語言關(guān)鍵字分別發(fā)生在哪個(gè)階段

    以下C語言關(guān)鍵字,分別發(fā)生在哪個(gè)階段? 第一個(gè),define。 首先得糾正一下,define 并不是C語言里面的關(guān)鍵字,即使加了井號(hào),也不是。 define 屬于
    的頭像 發(fā)表于 11-24 10:31 ?232次閱讀

    C++新手容易犯的十個(gè)編程錯(cuò)誤

    簡(jiǎn)單的總結(jié)一下?C++ 新手容易犯的一些編程錯(cuò)誤,給新人們提供一個(gè)參考。 1 有些關(guān)鍵字在 cpp 文件多寫了 對(duì)于 C++ 類,一些關(guān)鍵字
    的頭像 發(fā)表于 11-15 12:42 ?473次閱讀

    C語言和C++結(jié)構(gòu)體的區(qū)別

    同樣是結(jié)構(gòu)體,看看在C語言和C++中有什么區(qū)別?
    的頭像 發(fā)表于 10-30 15:11 ?356次閱讀

    C語言關(guān)鍵字--typedef

    C語言關(guān)鍵字使用方法學(xué)習(xí)指南!
    的頭像 發(fā)表于 10-07 12:44 ?342次閱讀

    ostream在c++的用法

    ostream 是 C++ 標(biāo)準(zhǔn)庫(kù)中一個(gè)非常重要的類,它位于 頭文件(實(shí)際上,更常見的是通過包含 頭文件來間接包含 ,因?yàn)?包含了 和 )。 ostream 類及其派生類(如 std::cout
    的頭像 發(fā)表于 09-20 15:11 ?942次閱讀

    使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測(cè)

    電子發(fā)燒友網(wǎng)站提供《使用邊緣AI和Sitara處理器進(jìn)行關(guān)鍵字檢測(cè).pdf》資料免費(fèi)下載
    發(fā)表于 09-02 11:30 ?0次下載
    使用邊緣AI和Sitara處理器進(jìn)行<b class='flag-5'>關(guān)鍵字</b>檢測(cè)

    C++實(shí)現(xiàn)類似instanceof的方法

    函數(shù),可實(shí)際上C++沒有。但是別著急,其實(shí)C++中有兩種簡(jiǎn)單的方法可以實(shí)現(xiàn)類似Java的instanceof的功能。 在 C++
    的頭像 發(fā)表于 07-18 10:16 ?673次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>中</b>實(shí)現(xiàn)類似instanceof的方法

    快速掌握C語言關(guān)鍵字

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

    inline關(guān)鍵字被優(yōu)化導(dǎo)致此類函數(shù)被布局在flash內(nèi),怎么處理?

    問題解決。 但是,希望樂鑫官方把idf內(nèi)源碼的inline關(guān)鍵詞都替換為__attribute((always_inline)),因?yàn)閕nline關(guān)鍵字不可靠! 期待下次idf版本更新能解決此bug,自己修改idf源碼真的是權(quán)
    發(fā)表于 06-21 12:03

    鴻蒙OS開發(fā)實(shí)例:【Native C++

    使用DevEco Studio創(chuàng)建一個(gè)Native C++應(yīng)用。應(yīng)用采用Native C++模板,實(shí)現(xiàn)使用NAPI調(diào)用C標(biāo)準(zhǔn)庫(kù)的功能。使用C標(biāo)準(zhǔn)庫(kù)hypot接口計(jì)算兩個(gè)給定數(shù)平方和的平
    的頭像 發(fā)表于 04-14 11:43 ?2765次閱讀
    鴻蒙OS開發(fā)實(shí)例:【Native <b class='flag-5'>C++</b>】

    使用 MISRA C++:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    在前兩篇博客,我們?向您介紹了新的 MISRA C++ 標(biāo)準(zhǔn)?和?C++ 的歷史?。在這篇博客,我們將仔細(xì)研究以 C++
    的頭像 發(fā)表于 03-28 13:53 ?861次閱讀
    使用 MISRA <b class='flag-5'>C++</b>:2023? 避免基于范圍的 for 循環(huán)中的錯(cuò)誤

    嵌入式C語言面試大挑戰(zhàn)

    C++static關(guān)鍵字除了具有C的作用還有在類的使用在類
    發(fā)表于 03-05 14:18 ?384次閱讀
    嵌入式<b class='flag-5'>C</b>語言面試大挑戰(zhàn)

    簡(jiǎn)單總結(jié)一下嵌入式C++中常見的錯(cuò)誤形式

    對(duì)于 C++ 類,一些關(guān)鍵字只要寫在 .h 中就好,cpp 中就不用再加上了,比如 virtual、static 等關(guān)鍵字,如果在 cpp 多寫,編譯器會(huì)報(bào)錯(cuò)。
    的頭像 發(fā)表于 02-23 09:40 ?575次閱讀
    主站蜘蛛池模板: 美女h片 | 亚洲一区二区三区电影 | 天天综合色天天综合色sb | 免费在线观看视频网站 | 91国内在线国内在线播放 | 日韩亚洲人成在线综合日本 | 视频午夜 | 日日日天天射天天干视频 | 久久综合欧美 | 亚洲欧美一区二区三区麻豆 | 在线网站 看片 网站 | 91天天操| 你懂得在线网址 | 激情五月播播 | 真实一级一级一片免费视频 | 亚洲色图25p | 一级a级国产不卡毛片 | 欧美一区二区视频三区 | 中文字幕在线第一页 | 日韩美香港a一级毛片 | ts人妖在线观看 | 国产青青草 | 最好看最新的中文字幕1 | 夜夜操网站 | 钻石午夜影院 | 国产成人精品日本亚洲语音1 | 午夜天堂影院 | 狠狠色丁香久久综合婷婷 | 国产精品理论片在线观看 | 又黄又爽又猛午夜性色播在线播放 | 成人一级视频 | 一本大道加勒比久久综合 | 永久免费品色堂 | 第三级视频在线观看 | 欧美成人午夜毛片免费影院 | 一级视频在线观看免费 | 九色国产在视频线精品视频 | 免费一级特黄 | 人人看人人鲁狠狠高清 | 国产农村妇女毛片精品久久久 | 国产成人综合亚洲怡春院 |