gpt4 book ai didi

c++ - const vs constexpr 变量

转载 作者:IT老高 更新时间:2023-10-28 11:25:17 33 4
gpt4 key购买 nike

以下定义有区别吗?

const     double PI = 3.141592653589793;
constexpr double PI = 3.141592653589793;

如果不是,C++11 中首选哪种风格?

最佳答案

我相信是有区别的。让我们重命名它们,以便我们可以更轻松地讨论它们:

const     double PI1 = 3.141592653589793;
constexpr double PI2 = 3.141592653589793;

PI1PI2 都是常量,这意味着你不能修改它们。但是 only PI2 是编译时常量。它在编译时初始化。 PI1 可以在编译时或运行时初始化。此外,only PI2 可以在需要编译时常量的上下文中使用。例如:

constexpr double PI3 = PI1;  // error

但是:

constexpr double PI3 = PI2;  // ok

和:

static_assert(PI1 == 3.141592653589793, "");  // error

但是:

static_assert(PI2 == 3.141592653589793, "");  // ok

至于你应该使用哪个?使用满足您需求的任何一个。你想确保你有一个编译时间常数,可以在需要编译时间常数的上下文中使用吗?您希望能够通过在运行时完成的计算来初始化它吗?等等。

关于c++ - const vs constexpr 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13346879/

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