gpt4 book ai didi

c++ - 为什么constexpr应该是静态的?

转载 作者:行者123 更新时间:2023-12-03 07:21:55 27 4
gpt4 key购买 nike

阅读thisthis后,我仍然对这种表达感到困惑:

static constexpr int = 0;
AFAIK,在C++中:
  • static通过并发线程
  • 确保整个执行过程中的终生内存地址和安全初始化
  • constexpr确保将时间编译评估为rvalue,这意味着它不应具有内存地址

  • 他们看起来与我矛盾。 static确保变量将具有较长的内存地址,而 constexpr确保相反的假设。令人惊讶的是,第一个链接中的讨论提到了这一点:
    constexpr int x = 3;
    const int* p = &x;
    如果它是右值,我们如何甚至获得 x的内存地址?
    有人可以解释吗?
    提前致谢

    最佳答案

    static具有多种含义。在类中(根据您的评论),这意味着该成员与该类相关联,而不是该类的特定实例(对象)。
    对于constexpr,这很有意义。通常使用编译器已知的值(而不是ctor参数)来初始化。

    关于c++ - 为什么constexpr应该是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64855843/

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