首页 >后端开发 >C++ >如何保证C成员初始化列表中的初始化顺序?

如何保证C成员初始化列表中的初始化顺序?

Susan Sarandon
Susan Sarandon原创
2024-12-14 09:12:12795浏览

How to Guarantee Initialization Order in C   Member Initializer Lists?

成员初始值设定项列表中的初始化顺序

在 C 中,构造函数通常使用成员初始值设定项列表来初始化成员变量。然而,这些变量的初始化顺序可能会令人困惑。

考虑以下构造函数:

class A {
public:
    OtherClass a_;
    AnotherClass b_;

    A(OtherClass o, string x, int y)
    : a_(o)
    , b_(a_, x, y) {}
};

问题:

最初,假设变量按照初始化列表中列出的顺序进行初始化:首先是 a_,然后是 b_。然而,当发现变量以相反的顺序初始化时,出现了问题。

问题:

如何控制初始化的顺序以确保a_ 之前已初始化b_?

答案:

初始化的顺序取决于类中数据成员声明的顺序。在本例中,a_ 在 b_ 之前声明,因此它将首先被初始化。

因此,为了确保所需的初始化顺序,在类定义中以正确的顺序声明数据成员至关重要。

以上是如何保证C成员初始化列表中的初始化顺序?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn