首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要静态初始化时

问不需要静态初始化时
EN

Stack Overflow用户
提问于 2014-07-03 11:18:03
回答 1查看 83关注 0票数 4

引用N3797 C++14最后工作草案3.6.2/3的话:

允许实现以静态初始化的形式执行具有静态存储持续时间的非局部变量的初始化,即使这种初始化不需要静态地进行,前提是 -初始化的动态版本不会在初始化之前更改名称空间作用域的任何其他对象的值,并且 -初始化的静态版本在初始化变量中产生的值与动态初始化产生的值相同,如果所有不需要静态初始化的变量都是动态初始化的话。

对于一个特定变量的初始化,所有变量都有什么?

如果可能的话,用例子来描述后一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-03 11:30:16

当一个变量的初始化项引用另一个变量时,这一点很重要。

代码语言:javascript
复制
constexpr int f(int);

extern const int a = f(1); // not required to be statically initialized
extern const int b = a; // also not required to be statically initialized

constexpr int f(int x) { return x; }

现在假设实现选择静态初始化b,而选择动态初始化a。在这种情况下,b的初始化将在a的初始化之前进行。您询问的文本解释说,这不允许实现将b初始化为零:即使首先初始化b,其值也必须是f(1),即1。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24552283

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档