我知道静态成员不属于对象。 但为什么会这样呢?
何时分配静态数据成员的内存?
答案 0 :(得分:2)
我知道静态成员不属于对象。但为什么会这样呢?
因为只要您拥有所有对象的数量,就会使用static
成员
“分享”,例如,类Foo具有的实例数。这样的“共享”成员不能属于特定实例。当创建新的Foo
对象时,静态变量num_instances
会递增。如果变量不是静态的,那么每个新的Foo都将以干净状态开始,并且不可能知道其他Foo。例如:
#include <iostream>
class Foo
{
static int num_instances; // all instances share this variable
public:
Foo()
{
++num_instances; // increment the number of instances
}
static int get_num()
{
return num_instances;
}
};
int Foo::num_instances = 0;
int main()
{
Foo foo1, foo2;
std::cout << "We have " << Foo::get_num() << " Foo's" << std::endl;
}
何时分配静态数据成员的内存?
在程序启动之前分配静态对象的内存。