有没有理由我们能够在类定义中定义[static const int],而不是其他静态const类型?

xcr*_*ypt 5 c++

可能重复:
为什么不允许使用静态const浮点数?

有什么理由说在C++中这是不可能的吗?这让我很困惑.

static const int A = 100; //no error
static const float B = 2.0f; //error, can't define this type in class definition.
Run Code Online (Sandbox Code Playgroud)

Ker*_* SB 1

整型的静态常量可以在类定义内初始化。这并不意味着该对象实际上存在,因为您还没有提供定义,但是因为编译器知道该对象的,所以有时您可以逃脱它。

也就是说,如果您不尝试获取变量的地址或通过引用传递它,而只是使用它的,那么您根本不需要提供定义,编译器只需在您所在的位置替换该值即可。使用变量。

C++11 引入了constexpr关键字,它允许您对更广泛的类型执行相同的操作。