能有人告訴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. 爲什麼語言改變爲英語在語言欄在C#
- 3. 改變語言
- 4. 「formatted」C語言
- 5. C語言
- 6. Shellcode c語言
- 7. 用c語言
- 8. 結構值不能改變(C語言)
- 9. STM32上C語言的全局變量
- 10. C語言中char變量的值
- 11. C語言中的變量聲明
- 12. C語言程序設計,變量
- 13. C語言中的可變修改類型
- 14. 有什麼方法可以用C語言改變目錄嗎?
- 15. 交換兩個可變由Scala語言
- 16. C語言的Java建模語言?
- 17. C語言數據結構可視化
- 18. asp.net變化語言
- 19. Buddypress:語言不變
- 20. 哪些類型在Google Go語言中可變且不可變?
- 21. 變遷語言變量
- 22. 語法與C語言
- 23. C語言語義規範
- 24. 編程語言C
- 25. C語言指針
- 26. 計算C語言
- 27. C#解釋語言
- 28. C語言創建
- 29. C編程語言
- 30. 擴展C#語言?
可能的重複:http://stackoverflow.com/questions/105014/c-mutable-keyword – dirkgently 2010-03-13 11:57:15