gpt4 book ai didi

C++:在构造函数中初始化变量的位置

转载 作者:IT老高 更新时间:2023-10-28 12:02:03 25 4
gpt4 key购买 nike

Possible Duplicate:
C++ initialization lists

在选项 1 和选项 2 中初始化变量的优缺点是什么?

class MyClass
{
public:
MyClass( float f, char a );
private:
float mFloat;
char mCharacter;
bool mBoolean;
int mInteger;
};

MyClass::MyClass( float f, char a ) : mFloat( f ), mBoolean( true ) // option 1.
{
// option 2
mCharacter = a;
mInteger = 0;
}

编辑:为什么选项 2 如此普遍?

最佳答案

简而言之,尽可能选择初始化列表。 2 个原因:

  • 如果你在类的初始化列表中没有提及变量,构造函数会默认在进入你编写的构造函数体之前初始化它。这意味着选项 2 将导致每个变量被写入两次,一次用于默认初始化,一次用于构造函数主体中的赋值。

  • 此外,正如 mwigdahl 和 avada 在其他答案中所提到的,const 成员和引用成员只能在初始化列表中进行初始化。

另外请注意,变量总是按照它们在类声明中的声明顺序进行初始化,而不是按照它们在初始化列表中列出的顺序(启用适当的警告后,如果列表写错了,编译器会发出警告)。同样,在类的析构函数中的代码执行之后,析构函数将以相反的顺序调用成员析构函数,即类声明中的最后一个到第一个。

关于C++:在构造函数中初始化变量的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6822422/

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