嵌套类中的静态成员是否具有封闭类的静态持续时间?

Apo*_*ian 2 c++ static-members inner-classes

如果我有嵌套类,并且这些嵌套类具有静态成员,那些成员对于封闭类仍然是静态的吗?例如,如果我有

class Enclosing {
public:
    Enclosing();
private:
    class Nested {
    public:
        Nested();
    private:
        static int thing;
    };
};
Run Code Online (Sandbox Code Playgroud)

如果我做

auto A = Enclosing();
auto B = Enclosing();
Run Code Online (Sandbox Code Playgroud)

愿意A并且B能够拥有不同的价值观thing吗?

Nia*_*all 5

愿意A并且B能够拥有不同的价值观thing吗?

不,他们不会有不同的价值观.所有实例都会看到相同的值thing; 这个类的嵌套在这里没有影响.

static成员变量"与类相关联"(即与类的实例相关联的非静态成员).来自cppreference ;

静态数据成员不与任何对象相关联.即使没有定义类的对象,它们也存在.如果声明了静态成员thread_local(从C++ 11开始),每个线程就有一个这样的对象.否则,整个程序中只有一个静态数据成员实例,具有静态存储持续时间.

现场样本.