为什么 C++ 类需要在类范围之外定义静态字段(数据成员)

Why does c++ class need to define static field(data member) outside the class scope?

本文关键字:静态 定义 字段 数据成员 C++ 范围 为什么      更新时间:2023-10-16

可能的重复项:
初始化私有静态成员
为什么我不能在类中初始化非常量静态成员或静态数组?

这对我来说很奇怪。为什么不假设全局范围内存在静态字段?

它必须放在某个地方(在某个目标文件中),以便链接器可以找到它。如果您在 .h 文件中声明了带有静态文件的类,并将此文件包含在几个.cpp文件中,那么应该为该文件分配哪个对象文件的位置将是模棱两可的。

另请注意,原始类型const static字段可以在类声明中初始化:

class Foo
{
    static const int n = 42;
};