2013-05-06 146 views
0

我有一個基類的靜態隊列:訪問從2靜態成員繼承

class A : public otherClass{ 
protected: 
    static Queue queue[SIZE]; 
    static int front, rear; 
public: 
    void funcA(); 
    void funcB(); 
}; 

現在2類繼承這個類:

class B: public A{ 
public: 
    void funcC(); 
} 

class C: public A{ 
public: 
    void funcD(); 
} 

我的問題是,當我實例B類和C,會有一個隊列實例,B和C都指向它,還是會有單獨的實例B和C?

回答

1

隊列是靜態的 - 在整個程序中只有一個無論您創建了多少個子類或實例。

就內存佈局而言,靜態成員與在任何類外部聲明的全局變量(除了名稱修飾)沒有區別。

0

靜態變量獨立於類的實例。靜態變量在初始化時被實例化,並在退出程序時被銷燬。因此,它們的壽命等於程序的壽命。