C 中非静态数据成员的初始化顺序
使用非静态数据成员创建类的新实例时,它们初始化的顺序对于正确的对象构造至关重要。
在这种情况下,让我们考虑以下内容code:
class A {}; class B {}; class X { A a; B b; };
问题来了:当调用类X的构造函数时,首先调用哪个构造函数(A或B)?它们在类定义中的位置决定了顺序吗?
根据 C 标准第 12.6.2 节,初始化顺序如下:
因此,在提供的代码中,非静态数据成员 a 和 b 是按照它们的顺序初始化的声明,首先是a,然后是b。 A 的构造函数将在 B 的构造函数之前被调用。
总之,非静态数据成员的初始化顺序由它们在类定义中的声明顺序决定,而不是由它们在构造函数中的位置决定身体。以上是C类中非静态数据成员的初始化顺序是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!