【发布时间】:2014-04-03 09:09:29
【问题描述】:
只有当成员是非易失性 const 整数类型时,C++ 才能在类声明中初始化常量静态成员。
但是为什么是整型呢?其他类型(如浮点数)是否存在任何实现问题?也许精度?
struct testClass
{
static const int val = 12;
//static const float val = 12;
};
【问题讨论】:
标签: c++
只有当成员是非易失性 const 整数类型时,C++ 才能在类声明中初始化常量静态成员。
但是为什么是整型呢?其他类型(如浮点数)是否存在任何实现问题?也许精度?
struct testClass
{
static const int val = 12;
//static const float val = 12;
};
【问题讨论】:
标签: c++
小心。编译器在目标上模拟浮点实现并不总是容易(甚至可行),而且无论如何,目标上的浮点行为可能会通过更改舍入模式而动态更改。
所以任何涉及编译时浮点值的事情都是棘手的。 C++03 没有做任何可能鼓励它的事情 ;-)
C++11 允许您使用 constexpr 代替 const。
【讨论】: