이 경우 정적 변수의 인스턴스가 하나 또는 0 여야합니다. f()
이 호출되었는지 여부에 따라 다릅니다. 정적 변수의메소드에 선언 된 정적 변수의 인스턴스는 몇 개입니까?
void f()
{
static int a;
}
그러나 얼마나 많은 인스턴스 f()
이 방법 인 경우가 있습니까?
class A
{
void f()
{
static int a;
}
};
이 경우 정적 변수의 인스턴스가 하나 또는 0 여야합니다. f()
이 호출되었는지 여부에 따라 다릅니다. 정적 변수의메소드에 선언 된 정적 변수의 인스턴스는 몇 개입니까?
void f()
{
static int a;
}
그러나 얼마나 많은 인스턴스 f()
이 방법 인 경우가 있습니까?
class A
{
void f()
{
static int a;
}
};
함수에 대한 동일 :
이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 및 경우 함수가 가상하게 0 또는 1은 너무 확인하는 것은 매우 쉽습니다 이렇게 :
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 '직교' – steffen