能有人告诉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