gpt4 book ai didi

c++ - C++中构造函数的初始化顺序

转载 作者:太空狗 更新时间:2023-10-29 19:37:45 27 4
gpt4 key购买 nike

通过使用以下类在 C++ 中实例化一个对象,我得到一个段错误或中止,这取决于声明成员变量的顺序。例如将 mMemberVar 和 mAnotherMemberVar 放在 manotherCountVar 之后会导致段错误。从这个 list 中,我从成员变量中删除了一个 std::ofstream,这导致了与其位置无关的段错误。

我认为顺序不是直接的问题,但您认为原因可能是什么?这个类是一个巨大项目的一部分,但是这个类中的这个是第一次出现错误的地方。

class COneClass : public IInterface
{
public:

COneClass();

virtual ~COneClass();

static const unsigned int sStaticVar;
static const unsigned int sAnotherStaticVar;


private:
COneClass();
COneClass(const COneClass& );
COneClass& operator=(const COneClass& );

int mMemberVar;
int mAnotherMemberVar;
bool mIsActive;
bool mBoolMemberVar;
bool mAnotherBoolMemberVar;
unsigned int mCountVar;
unsigned int mAnotherCountVar;
};

COneClass::COneClass() :
mMemberVar(0),
mAnotherMemberVar(0),
mIsActive(false),
mBoolMemberVar(false),
mAnotherBoolMemberVar(false),
mCountVar(sStaticVar),
mAnotherCountVar(sAnotherStaticVar)
{
}

最佳答案

类成员按照声明的顺序初始化。初始化列表中的顺序无关紧要。在你的情况下是这样的顺序:mMemberVar -> mAnotherMemberVar -> mIsActive -> mBoolMemberVar -> manotherBoolMemberVar -> mCountVar -> manotherCountVar;

关于c++ - C++中构造函数的初始化顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1492199/

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