2

可能重复:
为什么 std::numeric_limits<T>::max() 是一个函数?

为什么numeric_limits<T>::has_infinity是 const 值而numeric_limits<T>::infinity不是?为什么要做numeric_limits<T>::infinity一个函数?

4

1 回答 1

4

因为诸如float,doubleUDT 静态常量值之类的东西不能在类中初始化,需要外部定义。简而言之,它们需要一个内存位置,而静态 const 整数值不需要(只要不采用对它们的指针/引用)。

C++11中,应该声明这些函数constexpr,这克服了您可能从它们是函数而不是常量这一事实中看到的任何缺点。

于 2012-12-29T03:30:50.163 回答