问题标签 [initialization-order]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1386 浏览

c# - 为什么 C++ 强制成员变量的初始化按照声明的顺序进行

我知道在 C++ 中,类头中的成员声明定义了初始化顺序。你能告诉我为什么 C++ 选择这种设计吗?强制初始化顺序而不是遵循初始化列表有什么好处吗?

0 投票
1 回答
48 浏览

c++ - 初始化顺序:具有指向同一数组的单独指针的数组

我有一行代码声明了一个静态数组char,如下所示:

我想使用指针遍历这个数组,但buf它本身显然不能递增或递减。我的问题基本上是,这是合法的,还是这种未定义的行为:

这个和类似的例子在我的电脑(WSL,gcc 9.3.0)上编译和运行都很好,带有所有优化标志。在我运行的每个测试中,buf == ptr. 但从技术上讲,C++ 标准是否允许编译器重新排序这些声明,以便将 ptr 初始化为一些垃圾值?

我显然可以将它分成两行并避免任何疑问,但我想知道这个单行声明是否有效。