gpt4 book ai didi

c++ - 静态与成员变量

转载 作者:太空狗 更新时间:2023-10-29 20:19:30 27 4
gpt4 key购买 nike

为了调试,我想在我的类中添加一些计数器变量。但如果不更改 header 导致大量重新编译,那就太好了。

如果我正确理解关键字,以下两个片段将完全相同。当然假设只有一个实例。

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 可以在类中的任何地方访问,并且还会使 header 膨胀,因为变量应该在不再需要时被删除。

FooB 中,变量只在它所在的一个函数内可见。以后很容易去除。我能想到的唯一缺点是 FooB 的计数在该类的所有实例之间共享,但这对我来说不是问题。

  • 关键字的使用是否正确?我假设一旦在 FooB 中创建了 count,它就会保持创建状态并且不会在每次调用更新时都重新初始化为零。
  • 还有其他我应该注意的注意事项或注意事项吗?

编辑:在得知这会在多线程环境中引起问题后,我澄清我的代码库是单线程的。

最佳答案

您对静态函数变量的假设是正确的。如果您从多个线程访问它,它可能不正确。考虑使用 InterlockedIncrement()。

关于c++ - 静态与成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/625507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com