cpp中static 成员变量的内存既不是在声明类时分配,也不是在创建对象时分配,而是在(类外)初始化时分配。反过来说,没有在类外初始化的 static 成员变量不能使用。这是为什么?
时间: 2024-03-31 10:37:30 浏览: 50
C++静态成员函数不能调用非静态成员变量(详解)
C++中的 static 成员变量有以下特点:
1. 它们是属于类的,而不是属于对象的。也就是说,所有该类的对象共享同一个 static 成员变量。
2. 为了确保 static 成员变量只有一个实例存在,必须在类外进行定义。
3. 如果没有在类外对 static 成员变量进行初始化,则该变量的值将为0或默认值,具体取决于它的类型。
4. static 成员变量的初始化必须在类外进行,因为在类定义中无法为 static 成员变量分配内存。
因此,如果没有在类外对 static 成员变量进行初始化,那么它将没有分配内存,不能使用。这也是为什么在使用 static 成员变量时必须在类外进行初始化的原因。
阅读全文