Dav*_*uve 11 c++ static-variables instance-methods
假设我有这个程序:
class Foo {
public:
unsigned int bar () {
static unsigned int counter = 0;
return counter++;
}
};
int main ()
{
Foo a;
Foo b;
}
Run Code Online (Sandbox Code Playgroud)
(当然这个例子没有任何意义,因为我显然将"counter"声明为私有属性,但它只是为了说明问题).
我想知道C++在这种情况下的行为:bar()方法中的变量"counter"对于每个实例都是一样的吗?
Tim*_*sch 10
是的,counter将Foo在可执行文件中的所有类型对象实例之间共享.只要您处于单线程环境中,它就可以像共享计数器一样工作.
在多线程环境中,你将有一些有趣的竞争条件来调试:).
| 归档时间: |
|
| 查看次数: |
4911 次 |
| 最近记录: |