2012-07-06 12 views
6

इस मामले में, स्थैतिक चर के केवल एक या शून्य उदाहरण होना चाहिए। यह निर्भर करता है कि f() को कॉल किया गया है या नहीं।विधि में घोषित स्थैतिक चर के कितने उदाहरण हैं?

void f() 
{ 
    static int a; 
} 

लेकिन कितने स्थिर चर के उदाहरण देखते हैं अगर f() एक तरीका है?

class A 
{ 
    void f() 
    { 
     static int a; 
    } 
}; 

उत्तर

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 'ऑर्थोगोनल' के लिए +1 – steffen

संबंधित मुद्दे