首页 > 后端开发 > C++ > C类中非静态数据成员的初始化顺序是什么?

C类中非静态数据成员的初始化顺序是什么?

Mary-Kate Olsen
发布: 2024-12-18 15:12:14
原创
380 人浏览过

What's the Initialization Order of Non-Static Data Members in C   Classes?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板