gpt4 book ai didi

c++ - 用成员初始化成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:08:52 26 4
gpt4 key购买 nike

这是我经常遇到的问题。下面的例子说明了这一点:

struct A {
int m_SomeNumber;
};

struct B {
B( A & RequiredObject );
private:
A & m_RequiredObject;
};

struct C {
C( );
private:
A m_ObjectA;
B m_ObjectB;
};

C 的构造函数的实现如下所示:

C::C( )
: B( m_ObjectA )
{ }

由于未定义初始化顺序,当调用m_ObjectB 的构造函数时,m_ObjectA 可能未初始化,从而导致未定义的行为。强制执行特定顺序的一种方法是使成员成为指针并在构造函数主体中初始化它们,从而强制执行正确的顺序,但由于多种原因,这很难看。有没有办法使用构造函数的初始化列表来强制执行特定的初始化顺序?如果没有,您对如何处理此问题有任何其他建议。

最佳答案

Since the order of initialization is not defined

反之,则定义明确。初始化的顺序等于在类中声明成员变量的顺序(这与初始化列表的实际顺序无关!因此,让初始化列表的顺序与声明的顺序相匹配是个好主意避免令人讨厌的意外)。

关于c++ - 用成员初始化成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2243786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com