2012-07-06 13 views

Respuesta

4

Igual que para la función: 0 ó 1. Es muy fácil de comprobar también:

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

Salida:

1 
2 
3 

Sin embargo, si derieve de class A y crea la función virtual como este:

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

entonces a variable will ser diferente para la base y para cada clase derivada (porque las funciones también son diferentes).

2

Lo mismo ... ser una función miembro es ortogonal a ser un local estático.

+0

+1 para 'ortogonal' – steffen

Cuestiones relacionadas