成员初始值设定项列表中的初始化顺序
在 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中文网其他相关文章!