c++ - brace-or-equal-initializers 初始化顺序

标签 c++ initialization c++14

如果使用 brace-or-equal-initializers,成员变量的初始化顺序是什么?它们的初始化与代码顺序相同吗?

struct foo {
    int x = 1;
    int y = x + 1;
} bar;

无论编译器如何,bar.y 总是2 吗?

最佳答案

是的,y保证在x之后初始化。非静态数据成员总是 initialized in order of their declaration在类定义中,无论它们是如何初始化的(通过 member initializer listdefault member initializer ,甚至是 default initialization )。

3) Then, non-static data member are initialized in order of declaration in the class definition.

关于c++ - brace-or-equal-initializers 初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61994927/

相关文章:

c++ - 标准库中是否有等效于 std::endl 的选项卡?

c++ - 将函数包装器转换为 std::function

c++ - 无创多态性

c++ - 在与 PHP 的 openssl 库兼容的 C++ 中签署数据

c++ - 每次迭代后更新帧

c++ - CppCon 2018,尼古拉 Josuttis : Why are these interpreted as iterators?

c++ - 在派生类初始化器列表中初始化模板基类成员类型

c++ - 我可以创建具有指定长度但没有初始化的 C++ 字符串/vector 吗?

c++ - 为什么不将字符串文字作为对数组的引用而不是不透明指针传递?

c++ - 从 C++14 切换到 C++11 时修复的对 boost::system::detail::system_category_instance 的 undefined reference