【发布时间】:2009-03-09 09:14:37
【问题描述】:
为了调试,我想在我的类中添加一些计数器变量。但是最好不要更改标头导致大量重新编译。
如果我正确理解了关键字,那么以下两个 sn-ps 将完全相同。当然假设只有一个实例。
class FooA
{
public:
FooA() : count(0) {}
~FooA() {}
void update()
{
++count;
}
private:
int count;
};
对比
class FooB
{
public:
FooB() {}
~FooB() {}
void update()
{
static int count = 0;
++count;
}
};
在 FooA 中,可以在类中的任何位置访问 count,并且还会使标题膨胀,因为变量 应该 在不再需要时被删除。
在 FooB 中,该变量仅在它所在的一个函数中可见。以后容易删除。我能想到的唯一缺点是 FooB 的计数在类的所有实例之间共享,但这对我来说不是问题。
- 是否正确使用了关键字?我假设一旦在 FooB 中创建了 count,它就会保持创建状态,并且不会在每次调用更新时重新初始化为零。
- 是否还有其他需要注意的警告或提示?
编辑:在被告知这会在多线程环境中导致问题后,我澄清说我的代码库是单线程的。
【问题讨论】:
标签: c++ debugging static variables