假设我有这个程序:
class Foo { public: unsigned int bar () { static unsigned int counter = 0; return counter++; } }; int main () { Foo a; Foo b; }
(当然,这个例子是没有意义的,因为我很明显地将“counter”声明为私有属性,而只是为了说明问题).
我想知道C在这种情况下的行为:bar()方法中的变量“counter”对于每个实例都是一样的吗?
解决方法
是的,计数器将在您的可执行文件中的所有类型为Foo的对象实例中共享.只要你处于一个单线程的环境中,它将按预期的方式像共享计数器一样工作.
在多线程环境中,您将有趣的竞争条件来调试:).