首页 > 后端开发 > C++ > 为什么 C 构造函数中的成员初始化顺序与初始化器列表顺序不同?

为什么 C 构造函数中的成员初始化顺序与初始化器列表顺序不同?

Patricia Arquette
发布: 2024-12-19 04:12:50
原创
539 人浏览过

Why Does Member Initialization Order in C   Constructors Differ from the Initializer List Order?

成员初始化器列表评估顺序

使用初始化类成员的构造函数时,了解这些初始化发生的顺序至关重要。让我们探讨一个未遵循预期初始化顺序而导致意外行为的场景。

在提供的代码中,使用成员变量 a_ 和 b_ 定义了类 A。构造函数使用参数来初始化两个成员。程序员假设成员将按列出的顺序初始化:首先是 a_,然后是 b_。然而,在特定实例中,观察到 b_ 在 a_ 之前初始化,导致在初始化之前引用 a_ 时中止。

为了确保初始化的正确顺序,必须知道顺序是由类定义中的数据成员声明确定。在上面的示例中,a_ 在类中首先声明,然后是 b_。因此,无论成员初始化器列表中的顺序如何,a_总是会在b_之前被初始化,解决了程序员遇到的问题。

以上是为什么 C 构造函数中的成员初始化顺序与初始化器列表顺序不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

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