在 C 语言中,静态数据类中的成员不能直接在类定义中初始化,某些特定的成员除外
静态数据成员分配在程序的内存段中,并在程序的所有实例之间共享班级。 C 标准禁止它们的类内初始化,以防止在多个翻译单元中对同一变量进行多个定义。
同样,类中的静态数组无法在类中初始化,因为数组占用连续的内存块。允许类内初始化将导致在每个翻译单元中创建同一数组的多个副本,从而导致意外行为。
静态常量整型和枚举类型是这些规则的例外。这些类型可以在类中初始化,因为它们被视为编译时常量,并且它们的值在编译时已知。
enum { arrsize = 2 };
static const int c[arrsize] = { 1, 2 };
以上是为什么不能直接在 C 类中初始化静态成员和数组?的详细内容。更多信息请关注PHP中文网其他相关文章!