6
在这种情况下,应该只有一个或零个静态变量实例。这取决于f()
是否已被调用。静态变量的有多少个实例在方法中声明的静态变量?
void f()
{
static int a;
}
但是有多少实例是那里,如果f()
是一种方法?
class A
{
void f()
{
static int a;
}
};
在这种情况下,应该只有一个或零个静态变量实例。这取决于f()
是否已被调用。静态变量的有多少个实例在方法中声明的静态变量?
void f()
{
static int a;
}
但是有多少实例是那里,如果f()
是一种方法?
class A
{
void f()
{
static int a;
}
};
一样的功能:0或1。这是很容易查得:
class A
{
public:
void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
int main()
{
A a;
a.f();
a.f();
A b;
b.f();
}
输出:
1
2
3
但是,如果从class A
derieve,使虚拟功能像这样:
class A
{
public:
virtual void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
class B:public A
{
public:
void f()
{
static int a = 0;
++a;
cout << a << endl;
}
};
那么a
变量对于基数和每个派生类都是不同的(因为函数也不同)。
相同...作为成员函数是正交于静态本地。
+ 1 for'orthogonal' – steffen 2012-07-06 06:42:15