从2个继承的类访问静态成员

时间:2013-05-06 09:42:14

标签: c++ inheritance multiple-inheritance static-members

我有一个带有静态队列的基类:

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类时,是否会有1个队列实例,B和C都指向它,或者B和C是否会有单独的实例?

2 个答案:

答案 0 :(得分:1)

队列是静态的 - 无论你创建了多少个子类或A实例,整个程序中只有一个实例。

就内存布局而言,静态成员与在任何类之外声明的全局变量没有什么不同(除了名称修改)。

答案 1 :(得分:0)

静态变量独立于类的实例。静态变量在初始化时实例化,并在退出程序时被销毁。因此,它们的寿命等于程序的生命周期。