2012-07-06 13 views

cevap

4

fonksiyonu için aynı:

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(); 
} 

Çıktı:

1 
2 
3 

Ancak, class A gelen derieve ve eğer fonksiyon sanal hale 0 veya 1 Çok kontrol etmek çok kolaydır

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; 
    } 
}; 

o zaman a değişkeni olacak taban için ve her türetilmiş sınıf için farklı olmalıdır (çünkü işlevler de farklıdır). 'Ortogonal' için

2

Aynı ... üye işlev olmak statik bir yerel olmanın ortogonal olmasıdır.

+0

+1 – steffen