class A
{
static void f(void)
{
int a;
static int b;
}
};
a
和b
之间是否有任何(正式或实际)区别?静态方法中的正常和静态局部变量之间是否有区别?
class A
{
static void f(void)
{
int a;
static int b;
}
};
a
和b
之间是否有任何(正式或实际)区别?静态方法中的正常和静态局部变量之间是否有区别?
是的,两者是不同的。对于每个呼叫a
将被创建,而b
将只创建一次,对于A
类型的所有对象都是相同的。同样我的意思是,所有的对象共享一个b
的单个内存。
这是否意味着无论创建多少个“A”对象,该值都保持不变? – 2014-11-20 20:17:25
是的,它总是一样的。 – Venkatesh 2014-11-20 20:18:37
@laiello这是什么静态手段(这里):它不依赖于对象;全班同样如此。 – deviantfan 2014-11-20 20:19:09
是,考虑以下因素:
#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
'b'将在呼叫中保留其值,而'a'将每次重新初始化... – dlf 2014-11-20 20:16:17
http://en.c ppreference.com/w/cpp/language/storage_duration – 2014-11-20 20:17:06
当你尝试过时发生了什么? – Caleb 2014-11-20 20:21:23