具有继承的静态变量的行为

Chr*_*_vr 9 c++ static-members

我在讨论这个问题.

假设我有流动的类层次结构

    class  A
    {
    public:
         static int varr;
    }

    class B : public A
    {

    }

    Class C : public A
    {
    }
Run Code Online (Sandbox Code Playgroud)

如果我创建的对象B b1,b2,b3;,并C c1,c2,c3;A a1, a2;

1. varr将在上面提到的所有对象之间共享,还是会有不同对象的单独实例?

2.如果b1对象改变了它将反映的c1对象与否.

vra*_*js5 11

是的,它将在所有派生(B,C)和基类(A)的所有实例中共享.

将仅创建静态对象的一个​​实例,并且将在所有位置引用该对象.因此,如果您在一个地方进行更改,则意味着更改将反映在所引用的所有位置.

  • 将仅创建静态对象的一个​​实例,并且将在所有位置引用该对象.因此,如果您在一个地方进行更改,则意味着更改将反映在所引用的所有位置. (2认同)

Ale*_*ler 8

由于varr是静态的(与常规实例成员相对),因此只有一个副本属于类本身,而不是它的实例.B::varr,C::varr并且A::varr都访问相同的变量,因此没有为每个继承类创建副本.