gpt4 book ai didi

c++ - C++ 类 std::numeric_limits 中的字段与方法

转载 作者:可可西里 更新时间:2023-11-01 15:23:30 25 4
gpt4 key购买 nike

为什么在 C++ 的模板类 std::numeric_limits 中,digits(和其他)被定义为该类的一个(静态常量)字段,但是 min()max() 是方法,因为这些方法只返回一个垃圾值 ?

提前致谢。

最佳答案

不允许在类主体中初始化非整型常量(例如: float )。在 C++11 中,声明更改为

...
static constexpr T min() noexcept;
static constexpr T max() noexcept;
...

我认为,为了保持与 C++98 的兼容性,保留了函数。

例子:

struct X {
// Illegal in C++98 and C++11
// error: ‘constexpr’ needed for in-class initialization
// of static data member ‘const double X::a’
// of non-integral type
//static const double a = 0.1;

// C++11
static constexpr double b = 0.1;
};

int main () {
std::cout << X::b << std::endl;
return 0;
}

关于c++ - C++ 类 std::numeric_limits 中的字段与方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19709020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com