括号或相等的初始化程序的初始化顺序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了括号或相等的初始化程序的初始化顺序相关的知识,希望对你有一定的参考价值。
如果使用大括号或相等初始化器,成员变量的初始化顺序是什么?它们的初始化与代码顺序相同吗?
struct foo
int x = 1;
int y = x + 1;
bar;
无论编译器如何,bar.y
始终为2
吗?
答案
是,保证y
在x
之后被初始化。非静态数据成员在类定义中始终为initialized in order of their declaration,无论它们如何初始化(通过member initializer list或default member initializer,甚至是default initialization初始化)。
3)然后,按以下顺序初始化非静态数据成员类定义中的声明。
另一答案
从Scott Meyers的书,Effective C++,项目4:
C ++善变的一个方面是对象的顺序数据被初始化。此顺序始终相同:基类是在派生类之前初始化(另请参阅第12项),并且在类中,数据成员按声明。
以上是关于括号或相等的初始化程序的初始化顺序的主要内容,如果未能解决你的问题,请参考以下文章