class A
{
static void f(void)
{
int a;
static int b;
}
};
a
和b
之间是否存在(正式或实际)差异?
答案 0 :(得分:4)
是的,请考虑以下事项:
#include <iostream>
using namespace std;
class A
{
public:
static void func()
{
static int a = 10;
int b = 10;
a++;
b++;
std::cout << a << " " << b << endl;
}
};
int main() {
A a, b;
a.func();
b.func();
a.func();
return 0;
}
a
在func
的所有实例之间共享,但b
是每个实例的本地实例,因此输出为:
11 11
12 11
13 11
答案 1 :(得分:2)
是的,两者都不同。对于每次调用,a
将被创建,而b
将仅创建一次,并且对于A
类型的所有对象都是相同的。我的意思是,所有对象共享一个b
的内存。