设为首页 加入收藏

TOP

C++ 关键词 mutable
2014-11-24 08:05:27 来源: 作者: 【 】 浏览:1
Tags:关键词 mutable

mutable关键词的作用:被它修饰的成员变量,即使在常函数中也可以被更改。


mutable适用场合主要有以下两种,使用前要三思。


有一个常量成员函数,但是出于调试目的,想要跟踪常函数被调用的次数。注意如果你正在考虑使用mutable变量,那就会违反常量语义,所以请三思而后行。


class Employee {
public:
Employee(const std::string & name)
: _name(name), _access_count(0) { }
void set_name(const std::string & name) {
_name = name;
}
std::string get_name() const {
_access_count++;
return _name;
}
int get_access_count() const { return _access_count; }


private:
std::string _name;
mutable int _access_count;
}


一个更复杂的例子,有时候可能需要缓存一个复杂操作的结果。


class MathObject {
public:
MathObject() : pi_cached(false) { }
double pi() const {
if( ! pi_cached ) {
/* This is an insanely slow way to calculate pi. */
pi = 4;
for(long step = 3; step < 1000000000; step += 4) {
pi += ((-4.0/(double)step) + (4.0/((double)step+2)));
}
pi_cached = true;
}
return pi;
}
private:
mutable bool pi_cached;
mutable double pi;
};


只有pi()第一次被访问时才计算pi的值,计算出pi的值后,就保存起来,并且这个值是固定的,这样对于需要大量计算得出一个固定值的操作,就只需执行一次,而逻辑上这个函数依然是常函数。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇改进的冒泡排序算法 下一篇C++ 中 ZeroMemory、memset 危险..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·请问c语言刚入门,该 (2025-12-26 10:21:04)
·python 编程怎么定义 (2025-12-26 10:21:01)
·09-指 针 (一)-c语言 (2025-12-26 10:20:58)
·About - Redis (2025-12-26 08:20:56)
·Redis: A Comprehens (2025-12-26 08:20:53)