第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

除了允許變量被const函數(shù)修改之外,'mutable'關(guān)鍵字是否有任何其他用途?

除了允許變量被const函數(shù)修改之外,'mutable'關(guān)鍵字是否有任何其他用途?

C++
尚方寶劍之說 2019-07-25 15:13:23
除了允許變量被const函數(shù)修改之外,'mutable'關(guān)鍵字是否有任何其他用途前段時(shí)間我遇到了一些用mutable關(guān)鍵字標(biāo)記類的成員變量的代碼。據(jù)我所知,它只是允許您修改const方法中的變量:class Foo  {  private:       mutable bool done_;  public:       void doSomething() const { ...; done_ = true; }  };這是這個(gè)關(guān)鍵字的唯一用途,還是有更多的東西比它的眼睛?我已經(jīng)在一個(gè)類中使用了這個(gè)技術(shù),標(biāo)記為一個(gè)boost::mutex可變的允許const函數(shù)來鎖定它出于線程安全的原因,但是,說實(shí)話,它感覺有點(diǎn)像黑客。?
查看完整描述

3 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

它允許區(qū)分按位const和邏輯const。邏輯const是指對象不會(huì)以通過公共接口可見的方式更改,例如鎖定示例。另一個(gè)例子是一個(gè)在第一次請求時(shí)計(jì)算值的類,并緩存結(jié)果。

因?yàn)?code>mutable可以在lambda上使用c ++ 11 來表示按值捕獲的內(nèi)容是可修改的(默認(rèn)情況下不是這樣):

int x = 0;

auto f1 = [=]() mutable {x = 42;};  // OK

auto f2 = [=]()         {x = 42;};  // Error: a by-value capture cannot be modified in a non-mutable lambda



查看完整回答
反對 回復(fù) 2019-07-25
?
明月笑刀無情

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊

您對boost :: mutex的使用正是此關(guān)鍵字的用途。另一個(gè)用途是用于內(nèi)部結(jié)果緩存以加快訪問速度。

基本上,'mutable'適用于不影響對象外部可見狀態(tài)的任何類屬性。

在您的問題的示例代碼中,如果done_的值影響外部狀態(tài),則可變性可能不合適,這取決于...中的內(nèi)容; 部分。


查看完整回答
反對 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 659 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號