2012-07-06 7 views

risposta

4

Come per la funzione: 0 o 1. E 'molto facile da controllare anche:

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

uscita:

1 
2 
3 

Tuttavia, se si derieve da class A e rendere la funzione virtuale in questo modo:

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

poi il a variabile sii differente per la base e per ogni classe derivata (perché anche le funzioni sono diverse).

2

Lo stesso ... essere una funzione membro è ortogonale a essere un locale statico.

+0

+1 per "ortogonale" – steffen

Problemi correlati