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吗?
愿意
A并且B能够拥有不同的价值观thing吗?
不,他们不会有不同的价值观.所有实例都会看到相同的值thing; 这个类的嵌套在这里没有影响.
static成员变量"与类相关联"(即与类的实例相关联的非静态成员).来自cppreference ;
静态数据成员不与任何对象相关联.即使没有定义类的对象,它们也存在.如果声明了静态成员
thread_local(从C++ 11开始),每个线程就有一个这样的对象.否则,整个程序中只有一个静态数据成员实例,具有静态存储持续时间.
现场样本.