2012-07-06 2 views

답변

4

함수에 대한 동일 :

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 변수가 기본 클래스와 파생 된 각 클래스에 대해 달라야합니다 (함수가 너무 다르기 때문입니다).

2

멤버 함수와 동일한 것은 정적 로컬 인 것과 직각입니다.

+0

+1 '직교' – steffen

관련 문제