如果我有嵌套类,并且这些嵌套类具有静态成员,那些成员对于封闭类仍然是静态的吗?例如,如果我有
class Enclosing {
public:
Enclosing();
private:
class Nested {
public:
Nested();
private:
static int thing;
};
};
如果我这样做
auto A = Enclosing();
auto B = Enclosing();
A
和B
能否为thing
设置不同的值?
答案 0 :(得分:5)
A
和B
能否为thing
设置不同的值?
不,他们不会有不同的价值观。所有实例都会看到thing
的相同值;这个类的嵌套在这里没有影响。
static
个成员变量“与该类相关联”(即与该类实例相关联的非静态成员)。 From cppreference;
静态数据成员不与任何对象关联。即使没有定义类的对象,它们也存在。如果静态成员被声明为
thread_local
(从C ++ 11开始),每个线程就有一个这样的对象。否则,整个程序中只有一个静态数据成员实例,具有静态存储持续时间。