static int的值会变吗 为什么静态成员变量要通过类外初始化赋值?

为什么静态成员变量要通过类外初始化赋值?当类的数据成员声明为静态时,静态数据成员只能定义一次并由同一类的所有对象共享。每个对象都有类中每个普通数据成员的一个副本,但静态数据成员只存在一个实例,而不管定

为什么静态成员变量要通过类外初始化赋值?

当类的数据成员声明为静态时,静态数据成员只能定义一次并由同一类的所有对象共享。每个对象都有类中每个普通数据成员的一个副本,但静态数据成员只存在一个实例,而不管定义了多少个类对象。静态数据成员的目的之一是统计实际存在的对象数。静态数据成员不能在类中初始化。实际上,类定义只用于描述对象的蓝图,其中不允许指定初始值。无法在函数中初始化静态数据成员,因为静态数据成员由类的所有对象共享,因此每次创建类的对象时,都会重新初始化静态数据成员。