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)的所有实例中共享.
将仅创建静态对象的一个实例,并且将在所有位置引用该对象.因此,如果您在一个地方进行更改,则意味着更改将反映在所引用的所有位置.
由于varr是静态的(与常规实例成员相对),因此只有一个副本属于类本身,而不是它的实例.B::varr,C::varr并且A::varr都访问相同的变量,因此没有为每个继承类创建副本.
| 归档时间: |
|
| 查看次数: |
4878 次 |
| 最近记录: |