2012-07-06 71 views

回答

4

一样的功能:0或1。这是很容易查得:

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,使虚拟功能像这样:

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 for'orthogonal' – steffen 2012-07-06 06:42:15

相关问题