能有人告訴mutable
關鍵字的使用,一個活生生的例子一些活生生的實例,當它在一個const
函數用於解釋在一個活生生的例子對mutable
和const
功能也差爲volatile
成員和功能。C++語言可變
C++語言可變
回答
對於const對象實例中允許修改的變量,您可以使用mutable。這被稱爲邏輯常量(與逐位常數相反),因爲從用戶的角度來看對象沒有改變。
例如,您可以緩存字符串的長度以提高性能。
class MyString
{
public:
...
const size_t getLength() const
{
if(!m_isLenghtCached)
{
m_length = doGetLength();
m_isLengthCached = true;
}
return m_length;
}
private:
sizet_t doGetLength() const { /*...*/ }
mutable size_t m_length;
mutable bool m_isLengthCached;
};
我使用它們的其他地方是在迭代器中,其中const指的是迭代器值,而不是迭代器索引(它必須是可變的) – Anycorn 2010-03-13 16:57:12
所以你定義常量迭代器是const_iterators ......我從來沒有理解爲什麼有兩種不同的類型。 – 2010-06-30 12:13:25
@Alexandre:因爲迭代器的常量和它引用的值的常量是兩個完全不同的東西。 – 2010-06-30 12:34:02
您可以在計數器上使用mutable來跟蹤通過const訪問器訪問類成員的次數。
我用它一次來實現memoization。
- 1. 變化在scanf C語言
- 2. STM32上C語言的全局變量
- 3. 結構值不能改變(C語言)
- 4. C語言中char變量的值
- 5. 用c語言
- 6. C語言
- 7. 交換兩個可變由Scala語言
- 8. 有什麼方法可以用C語言改變目錄嗎?
- 9. C語言的Java建模語言?
- 10. C語言數據結構可視化
- 11. C#中的語言可選返回值
- 12. 哪些類型在Google Go語言中可變且不可變?
- 13. C語言語義規範
- 14. 語法與C語言
- 15. 學習C++語言
- 16. c語言問題
- 17. 計算C語言
- 18. 在Objective - C語言
- 19. C#SAPI 5.4語言?
- 20. 擴展C#語言?
- 21. C++語言擴展
- 22. C#語言更新
- 23. C#解釋語言
- 24. C語言錯誤
- 25. C#腳本語言
- 26. C語言識別#
- 27. 備案C語言
- 28. Pascal和C語言
- 29. C語言指針
- 30. C語言創建
可能的重複:http://stackoverflow.com/questions/105014/c-mutable-keyword – dirkgently 2010-03-13 11:57:15